构造函数初始化列表

今天我在想类里面类类型是什么时候初始化的
如:
class A
{
    A(B& bb)
    {
        b = bb;
    }
    public:
        B b;
};

class B
{
    B();
};
假如A a;定义一个对象会为对象的数据成员分配空间,然后调用构造函数进行初始化
从概念上讲构造函数的执行分为两个阶段初始化阶段和计算阶段,先初始化再计算
对于类里面的所有类类型都是在初始化阶段进行的初始化,即使其没有出现在初始化列表中,没有在初始化列表里面的直接调用默认构造函数,在里面调用指定的函数
所以对于需要初始化的要在列表中初始化,因为这样少一次调用默认构造函数的机会,效率提升,另外对于const和引用必须在列表里面初始化
对于内置或者复合的则两者一样随便哪一种
原文地址:https://www.cnblogs.com/zzyoucan/p/3974020.html