我需要的是第一批成員的析構函數的類本身之前調用類的破壞。 我知道破壞順序通常是以相反的順序。但我在特殊情況下對此進行了分析。更改析構函數爲了
// PortA
class PortA
{
public:
PortA() { cout << " PortA\n"; }
~PortA() { cout << " ~PortA\n"; }
};
// PortB
class PortB
{
public:
PortB() { cout << " PortB\n"; }
~PortB() { cout << " ~PortB\n"; }
};
class Card
{
public:
Card() { cout << "card\n"; }
~Card() { cout << "~card\n"; }
PortA mPA;
PortB mPB;
};
產生:
PortA
PortB
card
~card
~PortB
~PortA
但我需要在這種情況下:
card
PortA
PortB
~PortB
~PortA
~card
Closse第一口卡本身之前。
所以創建具有的順序成員的容器類。 – BoBTFish
您可以使用智能指針,例如'的std ::的unique_ptr <>'和手動創建'PortA'和''PortB'構造Card'和免費使用'.reset段()'中的析構函數 – user2807083
兩個問題的內部。首先,你爲什麼依靠這樣一個不同於施工順序的破壞秩序?其次,如果'PortB'的構造失敗(例如拋出一個異常) - 在'PortA'構建之後 - 你是否期望'PortA'遭到破壞? – Peter