掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
派生元クラスでの this の扱いについて (ID:54078)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
class A { virtual void Delete() { delete this; } }; class B : public A { void Delete() { delete this; } }; class C : public A { void Delete() { delete this; } }; int nain() { A* pData[3] = { new A, (A*)new B, (A*)new C }; for (int i=0; i < 3; i++) { A[i]->Delete(); } return 0; } 上記のようなソースがあるとして教えてください。 class B, class C の void Delete() 関数についてですが、これは絶対に必要でしょうか? 自分はこのような場合は class B, class C には void Delete() を 実装せず、基本クラス(A)で実装している void Delete() を呼んでいました。 ただ、 「class A で実装している void Delete() 関数内の delete this; の this は A* 型 だから class B, class C から呼ぶと問題あるのでは?」 という意見を最近聞きました。 実際のところはどうなのでしょうか? 意見をくれた人も自信が無いとの事ではっきりした答えがでていません。 よろしくお願いします。 VC++6.0+SP5
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.