using namespace std;
class C
{
int a;
public:
C(int aa=0) {a=aa;}
~C() {cout << "Destructor C!" << a << endl;}
};
class D: public C
{
int b;
public:
D(int aa=0, int bb=0): C(aa) {b=bb;}
~D() {cout << "Destructor D!" << b << endl;}
};
void test()
{
D x(5);
D y(6,7);
}
int main()
{
test();
}
上はコードで、下は実行結果です。
Destructor D!7
Destructor C!6
Destructor D!0
Destructor C!5
なぜ「デストラクタC!」なのかわかりません。呼び出されます。そして、関連するデストラクタの呼び出しシーケンス。スタックプッシュ/ポップのように感じます。
さらに:なぜ以前に「 Dx(5); 」 と呼ばれるのに、対応する結果が後で示されるのですか?