私たちが持っていると仮定します:
class A {
protected:
int* iArr;
float *fArr;
public:
A(int* iArr,float *fArr);
~A();
}
class B : public A {
private:
double *dArr;
public:
B(int* iArr,float *fArr,double *dArr);
~B();
}
私の直感は、B のデストラクタのみを呼び出すということでしたが、Visual C++ で実行すると、B のインスタンスを破壊すると、A と B の両方のデストラクタが呼び出されることがわかりました。
では、派生クラスでデストラクタを記述する正しい方法は何ですか? 親クラスがすべてを削除することを常に想定する必要がありますが、派生クラスだけが持っているものは何ですか?
編集:
もしそうなら、子がオーバーライド関数のみで親クラスを拡張している場合、それは子のデストラクタを空のままにしておくことを意味しますか?
それを変更したい場合はどうすればよいですか?子デストラクタのみを呼び出したい場合はどうすればよいですか? それを行う方法はありますか?