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

打印结果,证实了我们的猜想。

 

posted @ 2014-09-22 15:07  tilly_chang  阅读(241)  评论(0编辑  收藏  举报