以下程序输出什么?
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); }
认证高级PHP讲师
C++的析构跟构造是相逆的过程。构造过程是这样的:main中的实例a,B的基类A部分,B的成员_a,B本身。析构就反转过来,首先是B,然后是_a,然后是基类,然后是a,所以输出应该是:
main
a
B
A
_a
~B ~A ~A ~A
C++的析构跟构造是相逆的过程。构造过程是这样的:
main
中的实例a
,B
的基类A
部分,B
的成员_a
,B
本身。析构就反转过来,首先是B
,然后是_a
,然后是基类,然后是a
,所以输出应该是: