普通构造函数函数体内初始化:(事实上都是先初始化阶段再计算阶段)
#include <iostream>
using namespace std;
class A
{
public:
A() // 无参构造函数
{
cout << "Construct A" << endl ;
}
A(const A& ObjA) // 拷贝构造函数
{
cout << "Copy constructor for A" << endl ;this->a = ObjA.a;
}
A& operator = (const A& ObjA) // 赋值运算符,用来赋值而非初始化
{
cout << "assignment for A" << endl ;this->a = ObjA.a ;return *this;
}
int a ;
};
struct B
{
<span style="white-space:pre"> </span>A A1; <span style="white-space:pre"> </span>// Test2有一个Test1类的内嵌对象
<span style="white-space:pre"> </span>B(A &ObjA)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>A1 = ObjA ;
<span style="white-space:pre"> </span>cout << "Construct B"<<endl;
<span style="white-space:pre"> </span>}
};
int main()
{
A objA ; /

C++中,通过初始化列表初始化成员可以避免额外的默认构造函数调用,提高效率。对于常量成员、引用类型和无默认构造函数的类,初始化列表是必要的。成员初始化顺序遵循它们在类中的定义顺序,而非初始化列表中的顺序。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



