【概念】静态成员
一、概念
当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。
静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化。
1 #include <iostream> 2 3 using namespace std; 4 5 class Box 6 { 7 public: 8 static int objectCount; 9 // 构造函数定义 10 Box(double l=2.0, double b=2.0, double h=2.0) 11 { 12 cout <<"Constructor called." << endl; 13 length = l; 14 breadth = b; 15 height = h; 16 // 每次创建对象时增加 1 17 objectCount++; 18 } 19 double Volume() 20 { 21 return length * breadth * height; 22 } 23 private: 24 double length; // 长度 25 double breadth; // 宽度 26 double height; // 高度 27 }; 28 29 // 初始化类 Box 的静态成员 30 int Box::objectCount = 0; 31 32 int main(void) 33 { 34 Box Box1(3.3, 1.2, 1.5); // 声明 box1 35 Box Box2(8.5, 6.0, 2.0); // 声明 box2 36 37 // 输出对象的总数 38 cout << "Total objects: " << Box::objectCount << endl; 39 40 return 0; 41 }
当上面的代码被编译和执行时,它会产生下列结果:
Constructor called.
Constructor called.
Total objects: 2
二、静态成员和非静态成员的区别
https://www.cnblogs.com/hmdyc/p/6601766.html
三、初始化
类中特殊成员变量的初始化问题:
- 常量变量:必须通过构造函数参数列表进行初始化。
- 引用变量:必须通过构造函数参数列表进行初始化。
- 普通静态变量:要在类外通过"::"初始化。
- 静态整型常量:可以直接在定义的时候初始化。
- 静态非整型常量:不能直接在定义的时候初始化。要在类外通过"::"初始化。
/*******相与枕藉乎舟中,不知东方之既白*******/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!