静态成员变量

1、成员变量和成员函数前加上关键字static,称为静态成员。
2、静态成员变量:所有对象共享一份数据、在编译阶段分配内存、类内声明,类外初始化。

class Person
{public:static int m_A;
private:static int m_B;
};
int Person::m_A = 100;
int Person::m_B = 100;

上诉为类Person的定义,下面代码作为检测

Person p1;p1.m_A = 150;cout << "p1中的m_A为:" << p1.m_A << endl;//通过对象访问静态成员变量Person p2;p2.m_A = 200;cout << "p1的m_A成员变量为:" << p1.m_A << endl;cout << "p2的m_A成员变量为:" << p2.m_A << endl;p1.m_A = 300;cout << "p1和p2的m_A成员变量为:" << Person::m_A << endl;//通过类名访问静态成员变量

检验结果如下:

p1中的m_A为:150
p1的m_A成员变量为:200
p2的m_A成员变量为:200
p1和p2的m_A成员变量为:300
请按任意键继续. . .

3、静态成员变量的两种访问方式:
(1)、通过对象访问静态成员变量;
(2)、通过类名访问静态成员变量;
4、静态成员函数:
(1)、所有对象共享同一个函数;
(2)、静态成员函数只能访问静态成员变量

class Person
{public:static int m_A;int m_B;static void func1(){m_A = 150;//m_B = 200;  非静态成员变量不可访问cout << "Person中的m_A为:"<<Person::m_A << endl;}private:static void func2(){cout << "静态成员函数func2()的调用" << endl;}
};
int Person::m_A = 10;

由上诉代码可知,静态成员变量由类内声明,类外初始化,静态成员函数func1只能访问静态成员变量,不能访问非静态成员变量。
下诉代码作为检验

//1、通过对象访问Person p1;p1.func1();//2、通过类名访问Person::func1();

输出检验如下:

Person中的m_A为:150
Person中的m_A为:150
请按任意键继续. . .

C++ 静态成员变量相关推荐

  1. 为什么静态方法无法直接调用非静态成员变量和方法

    静态方法无法直接调用非静态成员变量和方法 看到这句话,要想到形容的是这样的如下 静态方法里面无法调用非静态变量 下面在写一个对比非静态的方法和静态方法调用变量对比 问题原因 静态变量和静态的方法是属于 ...

  2. C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)

    1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...

  3. 类的静态成员变量和静态成员函数的使用方法三

    第五个例子,使用类的静态成员变量 源码打印? #include <stdio.h> class Point { public: Point() { m_nPointCount++; } ~ ...

  4. 静态成员变量不占用类的内存空间

    假定程序运行环境为:操作系统Windows 2000,VC6.0编译环境,X86(80586)CPU处理器(32位小字节序处理器,4字节对齐) class CExample { public:     ...

  5. C++中类的静态成员变量和静态成员函数

    静态成员变量: 在类里用static对变量定义,缺省时初始化为0,不能在类中初始化,因为static变量在类实例化之前就已经存在. 在类外用<数据类型><类名>::<静态 ...

  6. 类中静态成员变量 无法解析的外部符号

    [1]如下代码及编译错误 如标题,不做赘述. [2]原因及解决方案 原因:之所以报如上编译错误,因为静态成员变量未初始化. 解决方案:类中静态成员需要在类外进行初始化.其格式为:类型 类名::静态成员 ...

  7. 静态成员变量和非静态成员变量的5个主要区别

    1.从保存位置: a) 静态成员变量: 方法区的静态区域 b) 非静态成员变量: 堆内存中的对象空间里面 2.从书写格式上看: a) 静态成员变量: 在数据类型前面多了一个static修饰 b) 非静 ...

  8. C++中的静态成员变量

    文章目录 1 C++中的静态成员变量 1.1 C++中静态成员变量的使用方法 1 C++中的静态成员变量 1.1 C++中静态成员变量的使用方法 在C++中可以定义静态成员变量: 静态成员变量属于整个 ...

  9. C++ static静态成员变量详解

    对象的内存中包含了成员变量,不同的对象占用不同的内存(已在<C++对象的内存模型>中提到),这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响.例如有两个相同类型的对象 a.b, ...

  10. 静态成员变量的初始化,vector类型变量初始化

    静态成员变量的初始化,vector类型变量初始化 Posted on 2008-11-24 16:28 浪端之渡鸟 阅读(1620) 评论(0) 编辑 收藏 某些情况下,在写C++类的时候,希望能通过 ...

最新文章

  1. React-Native原理及生命周期
  2. AutoX无人车完成1亿美元A轮融资,东风汽车领投,阿里旗下基金入股
  3. php多用户商城,php多用户商城选择开源的好
  4. redis入门(02)redis的常见问题
  5. java初学之stream
  6. 虚拟机测试必备虚拟机之VirtualBox 使用
  7. [笔试题]交换两个数不使用第三方变量 深入理解按位异或运算符
  8. 二级指针与指针数组的关系
  9. [css] 举例说明常用的cursor取值有哪些?
  10. linux上ln命令详细说明
  11. treeset 是有序吗_TreeSet如何实现有序?
  12. replaceFirst、replaceAll、replace区别
  13. python机器学习库sklearn——线性回归
  14. html设计有项目的页面,HTML+CSS项目开发经验总结(推荐)
  15. IOS 打包后安装崩溃,debug正常运行
  16. FatFs- 通用FAT文件系统模块
  17. android 查看路由器ip,如何查看路由器ip地址进入登录页面
  18. 【统一数据开发平台】-OLAP分析平台和实时数仓实践和优化
  19. 解决关于win10下eclipse代码格式化不生效问题
  20. Linux下删除特殊字符的文件或文件夹

热门文章

  1. 农村电商的未来:分享农业
  2. QT 通过label控件显示图片,图片能自适应label的大小
  3. 可编程 USB 转串口适配器开发板 S2S 功能介绍
  4. blackfin dsp(一)cces的使用
  5. 申请iso9001认证的好处?
  6. ffmpeg制作视频播放器(十四)XPlay2 read接口
  7. matlab r2015b激活之后出错,ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法...
  8. 9.23 Intel DSE编译器开发一面(40min)
  9. 【算法复习】寻路算法1 - A星 A star
  10. 将html中table内容转为电子表格导出