您的位置:首页 > 编程语言 > C语言/C++

Effective C++_Item4笔记

2016-07-29 13:36 197 查看
1. 你要区分赋值和初始化的区别,初始化的效率要高于赋值,int a = 5;这样的赋值相当于先进行初始化再进行赋值,如果使用int a{5}; (C++11)进行初始化操作,可以提高效率

2. 在构造函数中一定使用成员初始化列来初始化

3. C++有着十分固定的成员初始化顺序,基类总是早于派生类被初始化,在类中的成员变量总是以在声明的顺序来进行初始化,即使他们在成员初始化列中以不同的次序被初始化,为避免一些隐蔽的错误,当你在成员初始化列中条列各个成员的时候,最好以其声明顺序为次序,在这里举一个例子,在初始化一个自定义的数组类的时候,必需先指定数组的长度,因此代表大小的那个变量必需先有初值

4. 跨编译单元之初始化次序问题,现在有两个类A,B,其中B要调用A的一个实例extern A a;(只有声明,没有初始化),那么我就一定要保证这个实例a在B的调用之前被初始化,但是这个实例和B可能不是一个人所写,而且C++对于定义于不同编译单元的对象的初始化相对次序没有明确的定义.我们可以通过一个小小的设计来规避这个问题,即在类B中定义一个成员函数,这个成员函数返回一个类A的引用,这个成员函数中定义一个static的类A对象,然后将其返回,在使用的时候使用这个成员函数来代替对a的直接使用

首发于我的个人网站: 点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  effective c++ c++ 笔记