Heim > Fragen und Antworten > Hauptteil
以下程序输出什么?
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);
}
迷茫2017-04-17 13:01:18
C++的析构跟构造是相逆的过程。构造过程是这样的:main
中的实例a
,B
的基类A
部分,B
的成员_a
,B
本身。析构就反转过来,首先是B
,然后是_a
,然后是基类,然后是a
,所以输出应该是:
~B
~A
~A
~A