量産メモ帳

忘れっぽいのでメモを残しています。

クラスの拡張方法の違い。

スポンサーリンク

Java だと、これで問題なく拡張できる。


public class Base {
}
public class Sub extends Base {
}



C++ の場合、以下のように書いても拡張できるようだが、親クラスと子クラスの変数に対する参照が入れ替わったりして、おかしな事になったりする。


class Base {
}
class Sub: public Base {
}



この問題を避けるためには、デストラクタ*1に virtual を付けて定義する必要があるようだ。


class Base {
Base() {
}
virtual ~Base() {
}
}
class Sub: public Base {
}



参考資料:


*1:C# にもあるが、Java にはない。