在一个class及其继承类中,不但有父类,还有类的成员,还有子类。那么父类的构造函数,成员变量的构造函数以及子类的构造函数的顺序是怎么样的,有以下例题:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using namespace std;
class A
{
public:
A() { cout<<"create A"<<endl; }
A(const A& other){ cout<<"copy A"<<endl;} //复制构造函数
~A() { cout<<"~A"<<endl; }
};
class C
{
public:
C() { cout<<"create C"<<endl; }
C(const A& other){ cout<<"copy C"<<endl;} //复制构造函数
~C() { cout<<"~C"<<endl; }
};
class B:public A
{
public:
B()
{
cout<<"create B"<<endl;
}
~B()
{
cout<<"~B"<<endl;
}
private:
C _a;
};
int main(void)
{
B b;
cout<<"------------------------"<<endl;
}
该程序的输出结果为1
2
3
4
5
6
7create A
create C
create B
------------------------
~B
~C
~A
-感谢@牛客网 网友提供以上题目。
从以上的构造顺序可以看出:
父类的构造函数>成员变量C的构造函数>子类的构造函数而析构的过程恰恰相反。