《Effective C++》条款04总结
程序员文章站
2022-07-12 17:52:40
...
条款04:确定对象使用前已被初始化
class Test
{
private:
int x;
float y;
};
...
Test obj;
其中,obj的成员变量(x,y)有时候被初始化,有时候不被初始化。读取未初始化的值会导致一些不明确的行为,有时候可能会导致你的程序终止运行。
处理方法:永远在使用对象之前先将它初始化。
1、对于内置类型,采用手工方式进行完成,如下所示:
int data(12);
string str("hello world");
2、对于内置类型之外的类型利用构造函数进行初始化(尽可能的使用初始化列表)
注意:(1)成员初始化顺序:
先基类后派生类,对于class内的成员变量按照成员变量的声明顺序被初始化
(2)static成员在类外进行初始化。
上一篇: Effective C++ 条款5~7
下一篇: if
推荐阅读
-
Effective C++ 笔记:条款 31 将编译关系降至最低
-
Effective Modern C++ 条款32 对于lambda,使用初始化捕获来把对象移动到闭包
-
Effective Modern C++ 条款23 理解std::move和std::forward
-
Effective Modern C++ 条款37 在所有路径上,让std::thread对象变得不可连接(unjoinable)
-
Effective Modern C++ 条款38 意识到线程句柄的析构函数的不同行为
-
Effective Modern C++ 条款22 当使用Pimpl Idiom时,在实现文件中定义特殊成员函数
-
Effective C++ 笔记:条款 33 避免继承导致的名称遮掩
-
Effective C++:条款26:尽可能延后变量定义式的出现时间
-
Effective C++ 条款26 尽可能延后变量定义式的出现时间
-
Effective C++条款50:定制new和delete之(了解new和delete的合理替换时机)