在子类初始化时,构造函数的调用顺序是什么样的呢?
基类构造函数 -> 子类成员变量构造函数 -> 子类构造函数
验证:
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "A" << endl; }
~A() { cout << "~A" << endl; }
A(A &a) { cout << "A &" << endl; }
};
class B:public A
{
public:
B() :A() { cout << "B" << endl; }
B(A&a) :_a(a) { cout << "B &" << endl; }
~B() { cout << "~B" << endl; }
private:
A _a;
};
int main(void)
{
A a;
B b(a);
getchar();
return 0;
}
结果:
A
A
A &
B &