随笔分类 -  静态(static)

摘要:童鞋们在学习C++的时候,往往只是按照书本上的原文去强行记忆各种特性,比方说,静态变量只初始化一次。你心中一定在默念:一定要记住,static只会初始化一次云云,希望自己能够记住。告诉你,你为什么总是记不住,因为你没有正真理解静态变量的原理, 所以下面我就来告诉大家它的原理,直接上代码:[code=... 阅读全文
posted @ 2015-03-11 22:51 dzqabc 阅读(2680) 评论(0) 推荐(0)
摘要:静态全局变量就是在main函数调用之前调用的.静态局部变量则在第一次使用之前调用的. 静态变量的初始化是在首次执行到初始化语句时间执行的,编译时在初始化语句之前放置一个标志位,每次进行判断,倘若需要初始化则执行初始化操作,否则不执行. 阅读全文
posted @ 2012-06-04 22:22 dzqabc 阅读(1607) 评论(0) 推荐(0)
摘要:inline int static_test(){ static int i =0; ...}inline 代表编译时代码拷贝,也就有多份副本了,但在VC中测试,i只有一份副本,那么编译器是如何实现的:1.代码拷贝不一定是c代码的拷贝吧,可以是编译后的汇编代码的拷贝。而函数在代码段,变量则在数据段。拷贝的只是函数部分。静态变量在函数部分保存的仅仅是该变量的地址。2.static变量不是放在栈里的,是放在静态数据区.和全局变量存放在一起.不能将它和局部变量混为一谈。 阅读全文
posted @ 2011-06-22 00:09 dzqabc 阅读(1537) 评论(0) 推荐(0)
摘要:1.C++静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。举例如下: 1. class base{ 2. static int func1(); 3. int func2(); 4. }; 5. int (*pf1)()=&base::func1;//普通的函数指针 6. int (base::*pf2)()=&base::func2;//成员函数指针 2.静态成员函数不可以调用类的非静态成员。因为C++静态成员函数不含this指针。3.C++静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下: 1. 阅读全文
posted @ 2011-01-09 23:41 dzqabc 阅读(1149) 评论(0) 推荐(1)
摘要:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1.C++静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。其定义方式与全局变量相同。举例如下:xxx.h文件 1. ... 阅读全文
posted @ 2011-01-09 23:39 dzqabc 阅读(17199) 评论(0) 推荐(1)
摘要:静态变量函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数 。在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。静态函数(内部函数)函数本质上是全局的,默认可以被所有其他函数引用.内部函数只能在本文件中被引用的函数.定义内部函数时,在函数名和函数类型的前面加static.外部函数定义函数时,如果在函数首部最左端冠以关键字extern,标识次函数为外部函数,C语言规定,如果在定义函数是省略extern,则隐含为外部函数.在调用此函数的文件 阅读全文
posted @ 2009-07-28 09:46 dzqabc 阅读(217) 评论(0) 推荐(0)
摘要:Normal 0 0 2 false false false MicrosoftInternetExplorer4 静态常量的问题楼主waxic(waxic)2006-03-06 11:05:24 在 C/C++ / C++ 语言 提问在类定义中定义一个静态常量,在友员函数中不能访问! 头文件 class String { private: ....... static const int CIN=100; ....... public: ...... friend void function1(String & st) ...... }; 类描述文件中 void function1( 阅读全文
posted @ 2009-07-27 09:43 dzqabc 阅读(783) 评论(0) 推荐(0)
摘要:静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后. 阅读全文
posted @ 2009-07-27 09:10 dzqabc 阅读(401) 评论(0) 推荐(0)
摘要:“类中的非静态const常量,引用都必须在初始化成员列表中进行初始化”与编译器有关 阅读全文
posted @ 2009-07-23 13:54 dzqabc 阅读(907) 评论(0) 推荐(0)
摘要:static静态变量的理解静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而aut... 阅读全文
posted @ 2009-07-21 17:26 dzqabc 阅读(101537) 评论(5) 推荐(23)