第25课 类的静态成员变量

成员变量的回顾:

新的需求:

使用全局变量可以解决这个问题,但是使用全局变量在当代的软件开发中是不受欢迎的。

静态成员变量:

静态成员变量的生命期如同全局变量一样,就是程序的运行周期。

由于静态成员变量不属于某个对象,而是属于这个类的,因此,静态成员变量不可能占用对象的空间,所以静态成员变量只能在类外单独的分配空间。

静态成员变量在程序内部位于全局数据区。

示例:

 1 #include <stdio.h>
 2 
 3 class Test
 4 {
 5 private:
 6     static int cCount;
 7 public:
 8     Test()
 9     {
10         cCount++;
11     }
12     ~Test()
13     {
14         --cCount;
15     }
16     int getCount()
17     {
18         return cCount;
19     }
20 };
21 
22 int Test::cCount = 0;
23 
24 Test gTest;
25 
26 int main()
27 {
28     Test t1;
29     Test t2;
30     
31     printf("count = %d\n", gTest.getCount());
32     printf("count = %d\n", t1.getCount());
33     printf("count = %d\n", t2.getCount());
34     
35     Test* pt = new Test();
36     
37     printf("count = %d\n", pt->getCount());
38     
39     delete pt;
40     
41     printf("count = %d\n", gTest.getCount());
42     
43     return 0;
44 }

如果没有第22行的类的静态成员变量在类外的定义,则编译器会报错:

编译器提示没有办法访问到这个类里面的cCount,找不到存储空间,因为在这个类里面我们只进行了声明,并没有在类外定义,也就是不存在存储空间。

正常定义22行,编译运行结果如下:

 小结:

猜你喜欢

转载自www.cnblogs.com/wanmeishenghuo/p/9570565.html