掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
デストラクタを仮想関数にしたとき動き(1) (ID:68510)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
MSVS2008を使用して、以下のソースを実行すると A()B()C()~B()~A() と出力されることを期待していたのですが、実際には A()B()C()~C()~B()~A() となります。この理由がわかりません。 上位のベースクラスでですデストラクタが仮想関数として宣言されている場合には、 サブクラスのデストラクタが仮想関数かどうかは関係なくなってしまうということでしょうか? C++の使用としてこの動きで正しいかだけでも教えて頂けると助かります。 よろしくお願いします。 class A { public: A(); virtual ~A(); }; A::A() { cout << "A()"; } A::~A() { cout << "~A()"; } class B : public A { public: B(); ~B(); }; B::B() { cout << "B()" ; } B::~B() { cout << "~B()" ; } class C : public B { public: C(); ~C(); }; C::C() { cout << "C()"; } C::~C() { cout << "~C()"; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.