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