スレを勃てるまでもないC/C++の質問はここで 9
■ このスレッドは過去ログ倉庫に格納されています
0447431
2009/04/30(木) 01:55:58なるほど、理解できました。ありがとうございます。
C++ のような静的型付き言語で多相性を利用するとき、
派生クラスを基底クラスのポインタで指さなきゃいけないわけだが、
delete するときにはポインタは自分を基底クラスだとおもっているので、
基底クラスのデストラクタしか呼ばれない。
だから本来は、以下のようにタイプキャストでもしてやればいいんじゃないの?
int main() {
A* b = new B;
delete (B*)b;
}
でもこれって面倒だから、むしろデストラクタを virtual にしろという
あまり本質とも思えない慣習を広めた、というわけかな。
■ このスレッドは過去ログ倉庫に格納されています