c++ - 继承析构顺序

浏览:22日期:2023-06-03

问题描述

以下程序输出什么?

class A{public: A() { } ~A() { cout<<'~A'<<endl; }};class B:public A{public: B(A &a):_a(a)//初始化列表 { } ~B() {cout<<'~B'<<endl; }private: A _a;};int main(){ A a; B b(a);}

问题解答

回答1:

C++的析构跟构造是相逆的过程。构造过程是这样的:main中的实例a,B的基类A部分,B的成员_a,B本身。析构就反转过来,首先是B,然后是_a,然后是基类,然后是a,所以输出应该是:

~B~A~A~A

相关文章: