• 第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
    ", gTest.getCount());
    32     printf("count = %d
    ", t1.getCount());
    33     printf("count = %d
    ", t2.getCount());
    34     
    35     Test* pt = new Test();
    36     
    37     printf("count = %d
    ", pt->getCount());
    38     
    39     delete pt;
    40     
    41     printf("count = %d
    ", gTest.getCount());
    42     
    43     return 0;
    44 }

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

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

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

     小结:

  • 相关阅读:
    Ubuntu中安装mysql(一)
    磁盘格式化分区挂载
    mysql主从&主主部署记录
    python基础-编码环境安装与基本语法
    测试报告应包含的内容信息
    HTTP协议数据包简单总结
    支付功能测试点
    Android--monkey测试命令
    Fiddler 抓包学习_下载安装配置
    chrome F12_Network 开发者工具详解
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9570565.html
Copyright © 2020-2023  润新知