- 经过对象名可以访问 public 成员
- 每一个对象的成员变量都是专属的
- 成员变量不能在对象之间共享
- 统计在程序运行期间某个类的对象数目
- 保证程序的安全性(不能使用全局变量)
- 随时能够获取当前对象的数目
#include <stdio.h> class Test { private: int mCount; public: Test() : mCount(0) { mCount ++; } ~Test() { -- mCount; } int getCount() { return mCount; } }; Test gTest; int main() { Test t1; Test t2; printf("count = %d\n", gTest.getCount()); printf("count = %d\n", t1.getCount()); printf("count = %d\n", t2.getCount()); return 0; }
输出: count = 1 count = 1 count = 1 分析: 每一个对象的都有本身独立的成员变量,所以不具有全局统计的能力
在 C++ 中能够定义静态成员变量编程
- 静态成员变量属于整个类全部
- 静态成员变量的生命期不依赖于任何对象(与程序的运行期相同)
- 能够经过类名直接访问公有静态成员变量
- 全部对象共享类的静态成员变量
- 能够经过对象名访问公有静态成员变量
静态成员变量的特性安全
- 在定义时接经过 static 关键字修饰
- 静态成员变量须要在类外单独分配空间
- 静态成员变量在程序内部位于全局数据区
语法规则:code
Type ClassName::VarName = value;
#include <stdio.h> class Test { private: static int cCount; // 注意这里! public: Test() { cCount ++; } ~Test() { -- cCount; } int getCount() { return cCount; } }; int Test::cCount = 0; // 注意这里! Test gTest; int main() { Test t1; Test t2; printf("count = %d\n", gTest.getCount()); printf("count = %d\n", t1.getCount()); printf("count = %d\n", t2.getCount()); Test* pt = new Test(); printf("count = %d\n", pt->getCount()); delete pt; printf("count = %d\n", pt->getCount()); return 0; }
- 类中能够经过 static 关键字定义静态成员变量
- 静态成员变量隶属于类全部
- 每个对象均可以访问静态成员变量
- 静态成员变量在全局数据区分配空间
- 静态成员变量的生命期为程序运行期
以上内容参考狄泰软件学院系列课程,请你们保护原创!对象