【C/C++】C++11 类成员变量的多种初始化方式
·
C++11支持在类成员变量声明时直接进行初始化,这一特性被称为 类内初始化。
相比于传统方式(在构造函数初始化),类内初始化提供了更简洁直观的语法,减少了重复代码。
正确的初始化顺序是:
1. 构造函数初始化列表(最高优先级)
2. 类内成员初始化(声明时初始化)
3. 构造函数体内的赋值
详细解释:
当同时使用类内成员初始化(声明时初始化)和 构造函数初始化列表时,初始化列表会覆盖声明时的初始值。声明时初始化更像是提供一个"默认值",如果初始化列表中显式指定了值,就会使用初始化列表中的值。
示例代码说明:
class Example {
public:
int a = 10; // 类内成员初始化
int b = 20;
int c = 30;
// 构造函数
Example() : a(15) { // 初始化列表
// 构造函数体
b = 25; // 这是赋值,不是初始化
}
};
在这个例子中:
- 成员 a 的最终值是 15(初始化列表覆盖了声明时的10)
- 成员 b 的最终值是 25(构造函数体内的赋值覆盖了声明时的20)
- 成员 c 的最终值是 30(声明时初始化的30)
初始化顺序总结:
- 首先执行构造函数初始化列表
- 如果没有在初始化列表中指定,则使用声明时的初始值
- 最后执行构造函数体内的代码
更多推荐


所有评论(0)