类的static,const,static const,const static成员的初始化

类的static、const、static const、const static成员的初始化 在 C++ 编程中,static、const、static const 和 const static 是四个常见的概念,但它们的初始化方式却容易弄混淆。下面我们将对这四种成员变量的初始化方式进行总结和解释。 1. 类里的 const 成员初始化 在一个类里,const 成员变量不能在类定义中赋初值,因为编译器不知道 const 的内容是什么,所以不能把它用作编译期间的常量。因此,const 成员变量必须在构造函数中初始化,而不可以在类定义中进行初始化。 例如: ```cpp class Foo { private: const int i; public: Foo(): i(100) {} // 在构造函数中初始化 }; ``` 或者: ```cpp class Foo { private: const int i; public: Foo(); }; Foo::Foo(): i(100) {} // 在构造函数中初始化 ``` 在构造函数中初始化 const 成员变量可以确保其在对象创建时被正确地初始化。 2. 类里的 static 成员初始化 static 成员变量是属于类的,不属于某个对象,它在整个程序的运行过程中只有一个副本。因此,static 成员变量不能在定义对象时对变量初始化,用构造函数来初始化。其正确的初始化方式是: ```cpp class Foo { private: static int i; }; int Foo::i = 100; // 在类体外初始化 ``` 这表明: * 初始化在类体外进行,而前面不加 static,以免与一般静态变量或对象相混淆。 * 初始化时不加该成员的访问权限控制符 private,public 等。 * 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。 3. 类里的 static const 和 const static 成员初始化 在学习 static 成员初始化时,我们发现了网上有很多关于 static const 成员的初始化资料。const 成员要在构造函数初始化,而 static 成员在需要在类体外初始化,那么 static const 和 const static 成员应该在哪里进行初始化呢?这两个写法又会有什么不一样吗? 经过查阅相关资料和做了相关实验后,我们确认了只要用 static 关键字修饰的成员的初始化方式和只有 static 关键字修饰的成员一样,都必须在类体外初始化,而无论 static 在 const 前面还是后面。 例如: ```cpp class Test { public: static const int MASK1; static const int MASK2; }; const int Test::MASK1 = 0xFFFF; const int Test::MASK2 = 0xFFFF; ``` 关于两种方式的区别,我们还不知道,但是网上找到了一个关于它们区别的说法,仅供参考:没有区别。一个是静态常量,一个是常量静态,静态都将存储在全局变量区域,其实最后结果都是一样的。可能在不同编译器内,不同处理,但是最后结果是一样的。
























- g_zjiang2012-09-22不够详细。。谢谢、、
- flowerfang2012-11-06适合简单学习
- Dreamland_hjw2012-11-08还不错,就是内容有点少
- chancerly2012-10-18先学习一下,再详细一下更好

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【Android应用源码】商业项目完整版源代码.zip
- 【Android应用源码】上下拖动的listview.zip
- 【Android应用源码】神聊对讲机源码.zip
- 【Android应用源码】生日管家.zip
- 【Android应用源码】射击游戏.zip
- 【Android应用源码】实现抖动窗口.zip
- 【Android应用源码】实现动态交叉布局.zip
- 【Android应用源码】实现半透明的popupwindow.zip
- 工业自动化领域S7-1200 PLC蒸汽锅炉燃烧控制系统的技术解析与应用
- 基于PLC的变电站检测与监控系统设计:梯形图接线图原理图及IO分配、组态画面详解
- 基于FPGA的Verilog图像中值滤波算法实现及Matlab验证对比报告 FPGA
- 3KW电摩控制器硬件原理图及PCB文件
- ADRC与PID结合的车辆轨迹跟踪Simulink模型设计及其应用场景 (2025年)
- 永磁同步电机转速环模糊滑模控制策略解析与应用研究 滑模控制
- 基于ANSYS与Simpack的刚柔耦合分析:绿色柔性体应力与疲劳的全面解析
- 异构系统分组编队跟踪控制策略的研究与应用:多类型机器人协同控制的技术探讨 · 分布式系统


