学完Efficient c++ (04)

条款 4:确定对象在使用前已被初始化

无初值对象在 C/C++ 中广泛存在,永远在使用对象之前先将它初始化,因此这一条款就尤为重要。

对于无任何成员的内置类型,在定义完一个对象后需要尽快为它赋初值:

int x = 0;
const char* text = "A C-style string";

double d;
std::cin >> d;

对于类中的成员变量而言,需要通过构造函数进行初始化,确保每一个构造函数都将对象的每一个成员初始化。

注:对象的成员变量的初始化发生在进入构造函数之前,在构造函数内使用“=”是给成员变量赋值,而不是初始化,初始化发生在成员变量的default构造函数被自动调用时。(基于赋值的构造函数,首先调用default构造函数为成员变量设初值,然后再对它们赋新值

我们有两种建议的方法完成初始化工作,一种是直接在定义处赋初值(since C++11):

class CTextBlock {
private:
    std::size_t textLength{ 0 };
    bool lengthIsValid{ false };
};

另一种是使用构造函数成员初始化列表(基于初值列的构造函数,对成员变量设实参,每个成员变量以实参为初值进行copy构造,效率更高;对于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值