C++多继承构造和析构顺序

继承时构造函数和析构函数的执行顺序
单一继承:先调用父类构造函数,再调用子类的构造函数。
多重继承:调用父类构造函数的顺序是继承时的顺序(父类->爷爷类->...子类),最后调用子类构造函数。
#include<iostream>
using namespace std;

class C{
public:
  C(){cout<<__FUNCTION__<< "() "<< " line = " << __LINE__ <<endl;}
  ~C(){cout<<__FUNCTION__<< "() "<< " line = " << __LINE__ <<endl;}
};

class B{
public:
  B(){cout<<__FUNCTION__<< "() "<< " line = " << __LINE__ <<endl;}
  ~B(){cout<<__FUNCTION__<< "() "<< " line = " << __LINE__ <<endl;}
};

//类的多继承中,构造函数的执行顺序便与“继承声明”顺序相
//1.构造和析构顺序:B()->C()->A()->~A()->~C()->~B()
class A : public B, public C{
//2.1.构造和析构顺序:C()->B()->A()->~A()->~B()->~C()
//class A : public C, public B{
public:
  A(){cout<<__FUNCTION__<< "() "<< " line = " << __LINE__ <<endl;}
  ~A(){cout<<__FUNCTION__<< "() "<< " line = " << __LINE__ <<endl;}
};
int main(){
  A a;
  return 0;
}

结论:C++类的多继承中,构造函数的执行顺序便与“继承声明”顺序相同 。

发布了748 篇原创文章 · 获赞 458 · 访问量 243万+

猜你喜欢

转载自blog.csdn.net/u010164190/article/details/104871362
今日推荐