C++中多重继承构造函数执行顺序
Posted hu983
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中多重继承构造函数执行顺序相关的知识,希望对你有一定的参考价值。
代码1:
1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 6 class A{ 7 public: 8 A(){ 9 cout<<"A"<<endl; 10 } 11 }; 12 class B{ 13 public: 14 B(){ 15 cout<<"B"<<endl; 16 } 17 }; 18 class C:public B,public A{ 19 //class C:public A,public B{ 20 public: 21 C(){ 22 cout<<"C"<<endl; 23 } 24 }; 25 int main(){ 26 27 C c; 28 return 0; 29 }
输出:
B A C
分析:
多重继承与单继承类似,也是先执行基类构造函数。多个基类之间,则按照派生类声明时从左到右执行。
代码2:
1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 6 class A{ 7 public: 8 A(){ 9 cout<<"A"<<endl; 10 } 11 }; 12 class B{ 13 public: 14 B(){ 15 cout<<"B"<<endl; 16 } 17 }; 18 class C:public B,public A{ 19 //class C:public A,public B{ 20 public: 21 A a; 22 C(){ 23 cout<<"C"<<endl; 24 } 25 }; 26 int main(){ 27 28 C c; 29 return 0; 30 }
输出:
B A A C
分析:
执行顺序:基类构造函数->初始化成员变量->派生类构造函数
以上是关于C++中多重继承构造函数执行顺序的主要内容,如果未能解决你的问题,请参考以下文章
C++在单继承多继承虚继承时,构造函数复制构造函数赋值操作符析构函数的执行顺序和执行内容