C++11 初始化列表

1、简介 

c++11的初始化列表,它的核心目的是直接在对象创建时初始化成员变量,而不是先默认初始化再赋值。这种写法更高效且必要(const、引用、成员类无默认构造参数以及复杂类型可避免默认构造+赋值操作的双重开销)。

class Circle {
public:
    const double pi = 3.14159;  // 类内初始值
    double radius;              // 成员变量

    // 构造函数:通过初始化列表初始化 radius
    Circle(double r) : radius(r) {}
};

2、必须使用初始化列表的场景总结

场景示例原因
初始化 const 成员const int x;const 成员创建后不可修改
初始化引用成员int& ref;引用必须在创建时绑定
成员类无默认构造函数NoDefault obj;无法默认构造,需显式传参
提升效率(复杂类型)std::vector<int> data;避免默认构造 + 赋值的双重开销

3、注意点:

(1) 初始化顺序与声明顺序不一致

成员变量按声明顺序初始化,与初始化列表顺序无关。若初始化存在依赖关系,需注意顺序。

(2) 忽略必须初始化的成员

若遗漏 const、引用或不可默认构造的成员,编译器会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值