#include <iostream>
using namespace std;
/*
在 C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有
对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共
享不会破坏隐藏(相比全局变量的优点)的原则,保证了安全性还可以节省内存。
类的静态成员,属于类,也属于对象,但终归属于类。
*/
//中国校园设计的“一塔湖图” 
  class School{
public:
static void addLibBooks(string book){
 lib += book;
}
public:
string tower;
string lake;
/*
4.string aaa;
添加这个后sizeof(a)=12 
static 成员类外存储,求类大小,并不包含在内 
*/ 
//1.声明: static 数据类型 成员变量; //在类的内部
static string lib;
 };
/*
2.初始化:数据类型 类名::静态数据成员 = 初值; 在类的外部
static 成员使用时必须初始化,且只能类外初始化。
*/
string School::lib = "Beijing lib:";

int main(){
School a,b,c,d;
/*
static 数据成员,属于类,并不属于对象。
static 成员变量实现了同簇类对象间信息共享
存储于 data 区的 rw 段
cout<<sizeof(string)<<endl;输出是4 
*/ 
cout<<sizeof(a)<<" "<<sizeof(b)<<" "<<sizeof(c)<<" "<<sizeof(d)<<endl;
//类的方式访问,编译有问题,必须要初始化。
//在无对象生成的时候,亦可以访问。
School::lib = "China lib:";
/*
3.调用 
类名::静态数据成员
    类对象.静态数据成员
*/ 
cout<<School::lib<<endl;
/*5.
lib 虽然属于类,但是目的是为了实现类对象间的共享
故对象也是可以访问的。
*/ 
cout<<a.lib<<endl;
cout<<b.lib<<endl;
//为了搞好图书馆的建设,提设 static 接口
School::addLibBooks("mao xuan");
cout<<School::lib<<endl;
return 0;
}
/*
输出:
8 8 8 8
China lib: 
China lib: 
China lib: 
China lib: mao xuan 
*/

类静态数据成员的定义及初始化相关推荐

  1. Qt使用导出类报错:error C2491: “ZMapWidget::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义

    在使用一个继承自QObject带有Q_OBJECT宏的导出类时,编译报错:不允许 dllimport 静态数据成员 的定义. 原因是自动生成的moc文件带有静态函数,无法导出. 1.在Qt中的解决办法 ...

  2. Qt使用导出类报错:error C2491: “LmcThreadPaddle::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义

    Qt使用导出类报错:error C2491: "LmcThreadPaddle::staticMetaObject": 不允许 dllimport 静态数据成员 的定义 在使用继承 ...

  3. qt 不允许 dllimport 静态数据成员 的定义_C++类和对象的定义

    想用机器人赋能未来,少不了扎实的编程基本功,让我们跟着清华大学的C++语言程序课程一起过一遍C++的语法知识吧! C++语言特点--面向对象的程序设计 对象是现实中的对象在程序中的模拟,类是同一类对象 ...

  4. c语言类静态数据成员函数,鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员)...

    鸡啄米在上一讲数据和函数中讲到,函数之间共享数据也就是此函数访问彼函数的数据主要是通过局部变量.全局变量.类的数据成员.类的静态成员及友元实现的,前三个已经讲过了,这一讲鸡啄米来讲讲静态成员.静态成员 ...

  5. VS---不允许 dllimport 静态数据成员的定义

    1.QT的Q_OBJECT包含静态数据定义: #define Q_OBJECT \ public: \QT_WARNING_PUSH \Q_OBJECT_NO_OVERRIDE_WARNING \st ...

  6. c++dll导入导出宏定义,出现“无法定义dllimport 实体”和“不允许dllimport 静态数据成员的定义”的问题

    问题如下: 建立dll项目后,在Api_Head.hpp头文件中,定义宏: #ifndef API_HEAD_HPP #define API_HEAD_HPP #ifdef API_DLL_COMPI ...

  7. 什么是静态成员(静态数据成员和静态函数成员)

    目录 一:静态成员: 二:静态数据成员: 三:静态数据成员的特点: 四:访问静态数据成员 五:静态函数成员,如何定义成员函数 六:静态数据成员的特点. 一:静态成员: 在c++类中声明成员时, 加上s ...

  8. c++之静态数据成员与静态成员函数

    什么是静态数据成员? 数据成员我们之前学过,是对象的属性. 同一个类,不同的对象,可能拥有不同的属性 例如一个车行,不同的车有不同的颜色,不同的耗油量...等等属性 但是当我们统计一个公有的数据,用数 ...

  9. C++类的静态数据成员-关键字static

    C++类的静态数据成员-关键字static 定义:用static关键字声明的数据成员称为静态数据成员. 每个类只有一个存储单元,静态数据成员为该类的所有对象共有,不属于某个对象.静态数据成员的初始化必 ...

最新文章

  1. android通过uri得到文件对象,安卓[android] 通过Uri获取File文件
  2. 【PAT (Advanced Level) Practice】1001 A+B Format (20 分)
  3. HDU -2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)
  4. LibSVM 使用错误解决
  5. basemap安装_【我是解决安装问题系列_1】Mac python basemap安装
  6. VC学习笔记:文本图形
  7. 甘肃省智慧教育云平台实名认证_“好分数”甘肃行,人工智能助力教育均衡
  8. mysql 并发_MySQL的并发控制与加锁分析
  9. URAL1297 Palindrome【manacher算法】
  10. 仿分词统计的MapReduce 程序。
  11. android3种播放视频方式,Android 两种方式播放视频
  12. 打字游戏html代码,JavaScript打字小游戏代码
  13. Go语言实战--学习笔记--runner
  14. android控制灯编程,远程控制智能灯(android)
  15. php 图片 变灰色,php[图片变灰]生成灰色图片代码
  16. Exchange2013DAG环境搭建
  17. QT 加载歌词LRC文件
  18. C++ MFC打开图片并进行简单算法处理
  19. 练习HTML——简单的网页设计
  20. ping不通外网 连不上外网

热门文章

  1. java插入数据到mysql数据库
  2. MATLAB2016笔记(八):符号数学计算(MATLAB-Maple组件)
  3. 计算机网络原理:链路聚合
  4. 20220923学习日志
  5. matlab中megn函数,直接序列扩频完整系统matlab仿真
  6. 智能化IT运维平台建设方案,基于智和信通运维体系的高敏捷二次开发
  7. 什么是期权?如何从概念上理解看涨期权/看跌期权?
  8. Tomcat启动后闪退或一会儿后退出
  9. hdmi转双mipi转接_视频转换 HDMI 转 MIPI ADV7480
  10. RKC Z-TIO 模块基于MODBUS使用PROTEM软件设定参数