07/02/05 14:55:20
>>302
A *obj = new B;
みたいな使い方した場合。
Aに仮想関数が存在しなければobjはすべてAとして動作するから、
デストラクタもAのデストラクタが動けばいいけど
仮想関数が存在した場合、objはBとして動作することがある。
そのときBの動作してAのデストラクタしか動かなかった場合、危険でそ?
B *obj = new B;
のように宣言するならちゃんとobjが破棄されたときにBのデストラクタが動くはず。
でもそんなリスキーなこと考えず、仮想メンバ関数のあるクラスには
virtualなデストラクタを置くのが常識。