本文主要是介绍effective c++ 条款4:确定对象被使用前已先被初始化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
-
确保每一个构造函数都将对象的每一个成员初始化
-
使用member initialization list 替换 assignment:
- 总是在初值列中列出所有成员变量
- base classes比derived classes更早初始化,而class的成员变量总以其声明次序被初始化,即使他们在成员初值列中以不同次序出现,也不会有任何影响
//assignment
class tmp
{
private:
int age;
double name;
public:
tmp( const int _age, const double _name)
{
age = _age
name = _name;
}
}
//member initialization list
class tmp
{
private:
int age;
double name;
public:
tmp( const int _age, const double _name)
: age(_age), name(_name){}
}
-
对定义于不同编译单元(产出单一目标文件的源码)内的non-local static对象的初始化序列无明确定义
- 问题:某编译单元内的某个non-local static对象的初始化动作使用了另一编译单元内的某个non-local static对象,而所用的对象可能尚未被初始化
- 解决:将每个non-local static对象转至自己的专属函数内且声明为static,函数则返回reference指向它所含的对象
-
please remember:
- 为内置型对象进行手工初始化
- 构造函数最好使用member initialization list。初值列列出的成员变量,其排序次序和他们在class中的声明次序相同
- 以local static对象替换non-local static对象
这篇关于effective c++ 条款4:确定对象被使用前已先被初始化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!