搜尋

首頁  >  問答  >  主體

c++ - 继承析构顺序

以下程序输出什么?

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中文网PHP中文网2804 天前497

全部回覆(1)我來回復

  • 迷茫

    迷茫2017-04-17 13:01:18

    C++的析構跟構造是相逆的過程。建構過程是這樣的:main中的實例aB的基類A部分,B的成員_aB本身。析構就反轉過來,首先是B,然後是_a,然後是基類,然後是a,所以輸出應該是:

    ~B
    ~A
    ~A
    ~A

    回覆
    0
  • 取消回覆