C++学习之路: 关于class的静态变量
引言: 在定义类的时候,有时我们有一种需求想让 一个类的所以对象共用一个变量, 例如全体中华人民共和国公民共用一个人口总数, 我们都是中国公民, 但是我们国家的人口总数,是我们共有的。
由此我们引出了类中的static 静态变量, 它和 类体外的静态变量时有一些小小的区别的。
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 6 class Test 7 { 8 public: 9 Test() 10 { 11 count++; 12 } 13 14 ~Test() 15 { 16 count--; 17 } 18 19 static void print() 20 { 21 cout << "当前对象个数: " << count << endl; 22 } 23 private: 24 static int count; //表示对象的个数 25 }; 26 27 int Test::count = 0; 28 29 int main(int argc, const char *argv[]) 30 { 31 Test::print(); 32 Test t1; 33 t1.print(); 34 Test t2; 35 t1.print(); 36 t2.print(); 37 38 return 0; 39 }
像我们代码中的static int count,首先它是class的private成员,不是所有用户都可以访问的,是私有的。
它是静态的,属于所有对象共同所有, 就像班级的篮球一样, 所有人都拥有它,但是却不是独享的。 当其中一个对象对其进行count++时,其他对象的count也会自增1;
1 当前对象个数: 0 2 当前对象个数: 1 3 当前对象个数: 2 4 当前对象个数: 2
打印结果,证实了我们的猜想。