1. 非内部类型成员函数初始化效率: A初始化表里被初始化 > B函数体内赋值
实际上B干了两件事:先暗地里创建m_a对象(调用了A的无参数构造函数),再调用类A的赋值函数,将参数a赋给m_a。
2. CLASSA objA = obj; // 调用拷贝构造
CLASSA objB;
objB = obj; // 调用赋值
3. 成员对象初始化的次序完全不受它们在初始化表中次序的影响,只由成员对象在类中声明的次序决定
4. 有指针成员时的重载赋值=,步骤:
a. 检查自赋值 if(this == &other)
b. 用delete释放原有的内存资源
c. 分配新的内存资源,并复制
d. 返回本对象的引用
实际上B干了两件事:先暗地里创建m_a对象(调用了A的无参数构造函数),再调用类A的赋值函数,将参数a赋给m_a。
2. CLASSA objA = obj; // 调用拷贝构造
CLASSA objB;
objB = obj; // 调用赋值
3. 成员对象初始化的次序完全不受它们在初始化表中次序的影响,只由成员对象在类中声明的次序决定
4. 有指针成员时的重载赋值=,步骤:
a. 检查自赋值 if(this == &other)
b. 用delete释放原有的内存资源
c. 分配新的内存资源,并复制
d. 返回本对象的引用