一 点睛

类的静态数据成员都有着单一的存储空间,所以存储空间必须定义在一个单一的地方。如果一个静态数据成员被声明而没有被定义,链接器会报告一个错误“定义必须出现在类的外部而且只能定义一次”。因此静态数据成员的声明通常会放在一个类的实现文件中。

xxx.h 类型文件

class base{
public:static int var;    //声明静态数据成员
};

xxx.cpp 类型文件

int base::var=10    //定义静态数据成员,不必在初始化语句里加static

在头文件中定义静态成员容易引起重复定义的错误,比如这个头文件同时被多个cpp文件所包含的时候。

C++静态数据成员被类的所有对象所共享,包括该类的派生类的对象。派生类对象和基类对象共享基类的静态数据成员。静态数据成员在内存中只占一份空间。如果改成它的值,则在各个对象中这个数据成员的值同时都改变了,这样可以节省空间,提高效率。

二 实战

1 代码

#include<iostream>
using namespace std;
class Base{
public:static int var;
};
int Base::var=10;
class Derived:public Base{
};
int main(){Base base1;base1.var++;//通过对象名引用cout<<base1.var<<endl;//输出11Base base2;base2.var++;cout<<base2.var<<endl;//输出12Derived derived1;derived1.var++;cout<<derived1.var<<endl;//输出13Base::var++;//通过类名引用cout<<derived1.var<<endl;//输出14return 0;
}

2 运行

[root@localhost charpter02]# g++ 0212.cpp -o 0212
[root@localhost charpter02]# ./0212
11
12
13
14

C++中静态数据成员相关推荐

  1. c++对象长度之静态数据成员(3)

    当类中定义了静态数据成员.当类中定义了静态数据成员时,由于静态数据成员与静态变量原理相同(是一个含有作用域的特殊全局变量),因此该静态数据成员的初值会被写入编译链接后的执行文件中.当程序被加载时,操作 ...

  2. 静态数据成员和静态成员函数

    转载自:https://blog.csdn.net/computer_liuyun/article/details/29235111 c++中的static静态数据成员和静态成员函数应该是让大家比较头 ...

  3. 静态数据成员和静态数据成员函数

    c++中的static静态数据成员和静态成员函数应该是让大家比较头疼的东西,好像也是找工作公司面试中常常问到的东西.我自己也深有体会,在学习c++的过程中,总感觉static很烦人,但是又是一个必须懂 ...

  4. 对C++ static作用——修饰 数据成员(改变为静态数据成员)、 成员函数(改变为静态成员函数)

    **************************C++中的static的用法******************************** *************************** ...

  5. C++静态数据成员和静态成员函数

    在C++面向对象编程过程当中,对象与对象之间的数据不是共享,在设计类的时候,有时候需要一些对象之间共享的数据,除了把所要共享的数据设置为全局数据或者函数之外,还可以利用C++的静态机制. 1.静态数据 ...

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

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

  7. 【C++基础学习】关于C++静态数据成员

    静态类成员包括静态数据成员和静态函数成员两部分. 一. 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员.和其他数据成员一样,静态数据成员也遵守pu ...

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

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

  9. 静态数据成员与静态成员函数

    3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握静态数据成员和静态成员函数的用法 要求设计一个点类 ...

最新文章

  1. Python自动化3.0-------学习之路-------函数!
  2. An Implementation of Double-Array Trie
  3. .net framework开发winform_这个Winform的UI库也太全了!四十多个控件都在这一个项目里了...
  4. Computer:屏幕录像专家软件的简介、安装、使用方法之详细攻略
  5. Nginx 下载限速
  6. python-IDE的使用(小白先看)
  7. Java高级进阶学习资料!java开发环境的搭建是什么意思
  8. 搜狐视频开放平台的申请使用方法
  9. 计算机网络之网络层:6、IPv6
  10. FTP用户无法登陆排错详解
  11. 【图像直线拟合】基于matlab最小二乘法图像直线拟合【含Matlab源码 100期】
  12. Java将英文句子分解为单词
  13. java面向对象孙卫琴_[转]归去来兮,回归本源 ——评孙卫琴新作《Java面向对象编程》...
  14. 硬盘柱面损坏怎么办_电脑硬盘坏了怎么办?不花一分钱就能成功修复!
  15. FATAL: Atom .R<CYM 383>.A<H 11> does not have a type.
  16. 内网外网服务器时间同步解决方案
  17. 中国特有的狸花猫有多强大?
  18. 彩虹登录聚合中转API程序网站源码「免授权」
  19. Java编程练习之:转换罗马数字
  20. Linux查看CUDA版本以及nvcc: command not found

热门文章

  1. hadoop之mr案例
  2. 2019 小红书校招笔试题字符串压缩算法
  3. 2022年小红书最新Java面试题 - 一面
  4. wifi加密之 TKIP
  5. 《论文笔记》基于图像分割和视觉感知的盲调映射图像质量评价
  6. BugPhobia开发篇章:绩效管理的层次优化
  7. 一种激光透车膜摄像机,可穿透车膜抓拍车内人员图像
  8. 0715Python总结-文件相关操作,扩展模式及相关函数
  9. EOS区块链 智能合约 教程1(发布合约)
  10. D3D中的Z缓存使用示例