1 类成员初始化的三种方式
1.1 三种方式介绍
初始化方式一:初始化列表
class A
{
public:int a; // 初始化列表A(int a_):a(a_){}
};
初始化列表是在构造函数冒号后对成员进行初始化,这是在成员被分配内存的同时进行的初始化操作。这样避免了成员变量先被默认构造然后再赋值的过程。
初始化方式二:构造函数初始化
class A
{
public:int a; // 初始化列表A(int a_, bool b) { a = a_; }
};
只有当类的所有成员初始化完成之后才开始执行构造函数体,所以此时并不是真正意义上的初始化,而是重新赋值!
在构造函数体内部进行赋值,相比于内类初始值/构造函数初始化列表的只调用一次构造函数,多了一次赋值操作,效率更低。
初始化方式三:声明时初始化(也称就地初始化,c++11后支持)
class A
{
public: