问题描述
以下程序输出什么?
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