C++类 备忘录

来源:互联网 发布:mysql 排序后limit 编辑:程序博客网 时间:2024/09/21 06:18

1. 成员初始化列表:

编译器真正初始化成员的顺序是按照它们在类中申明的次序的,而并不是列在成员初始化列表里的顺序

//成员初始化列表class X{    public:        X(int val):i(val),j(i){}    public:        int i;        int j;}

下面这四种情况下是必须要用成员初始化列表语法来初始化成员的:

1.初始化一个reference member2.初始化一个const member3.调用一个base class的构造函数,而它拥有一组参数4.调用一个member class的构造函数,而它拥有一组参数

当成员都是基本类型时,两种构造方法在效率上没有任何区别,当成员有class对象时,情况就不一样,在构造函数体中通过赋值运算符=进行初始化时,会产生临时对象,在用成员初始化列表进行构造时,会直接调用class 成员的copy 构造函数,效率上会有所提升,不过现在的编译器将做何种优化也视不同的编译器而异。

原创粉丝点击