C++相談室 part34
レス数が900を超えています。1000を超えると表示できなくなるよ。
0932デフォルトの名無しさん
NGNGclass A { ... };
class B { ... };
class C : public A, public B { ... };
A, B, C全て仮想デストラクタを持っている
C* pc = new C;
B* pb = pc;
delete pb;
デストラクタは正しく呼ばれるが、pbのアドレス(pc != pbは確認済み)でメモリが解放されておかしくなる
と思ったのですが、operator newとdeleteをオーバーライドしてトレースしてみたところ
operator deleteではpcのアドレスが来ました。
delete pb;ではpbが指すのがCのオブジェクトなのかBのオブジェクトなのか区別できないはずなのに
どうしてpcのアドレスが求めることができたのでしょうか?
レス数が900を超えています。1000を超えると表示できなくなるよ。