1.1 静态成员变量 1.1.1 回顾成员变量
通过对象名能访问public成员变量每个对象的成员变量都是专属的成员变量不能再对象间共享1.1.2 实例代码
class Test { private: public: static int cCount; Test() { cCount++; } ~Test() { cCount--; } int getCount() { return cCount; } }; int Test::cCount =0; int main() { Test t1; Test t2; printf("cCount=%d\n",Test::cCount); Test * t3 =new Test; printf("cCount=%d\n",t1.getCount()); delete t3; printf("cCount=%d\n",t1.getCount()); return 0; }1.1.3 C++中定义静态成员变量
静态成员变量数据整个类所有静态成员变量的生命周期不依赖于任何对象可以通过类名直接访问共有静态成员变量所有对象共享类的静态成员变量可以通过对象名访问公有静态成员变量 1.1.4静态成员变量的特性 在定义时直接通过static关键字修饰今天成员变量需要在类外单独分配空间静态成员变量在程序内部位于全局数据区语法规则: Type ClassName::VarName = value1.2静态成员函数 1.2.1 我们需要什么?
不依赖对象就可以访问静态成员变量必须保证静态成员变量的安全性方便快捷的获取静态成员变量的值1.2.2 C++中可以定义静态成员函数
静态成员函数是类中特殊的成员函数静态成员函数属于整个类所有可以通过类名直接访问公有静态成员函数可以通过对象名房屋共有静态成员函数1.2.3 静态成员函数定义
直接通过static 关键字修饰成员函数 static void func();1.2.4静态成员函数VS 普通成员函数
空静态成员函数普通成员函数所有对象共享Yesyes隐含this指针NOyes访问普通成员变量(函数)NoYes访问静态成员变量(函数)yesyes通过类名直接调用yesno通过对象名直接调用yesyes1.2.5 程序改进
class Test { private: static int cCount; public: Test() { cCount++; } ~Test() { cCount--; } static int getCount() { return cCount; } }; int Test::cCount =0; int main() { printf("cCount=%d\n",Test::getCount()); Test t1; Test t2; printf("cCount=%d\n",Test::getCount()); Test * t3 =new Test; printf("cCount=%d\n",Test::getCount()); delete t3; printf("cCount=%d\n",Test::getCount()); return 0; }运行结果
参考一 :狄泰软件学院C++进阶剖析 如有侵权:请联系邮箱 1986005934@qq.com