C++ 言語標準を見て、基本クラスのデストラクタを呼び出さずに、派生クラスのデストラクタのみを呼び出す方法はありますか?
だから、クラスのために
class Base { public: virtual ~Base() {} };
class Derived : public Base { public: ~Derived();};
のようなコードを書くことが可能であれば
Base *basePtr = new Derived();
//do something with basePtr
// Now somehow destroy Derived while keeping Base - call ~Derived() only,
// line below however will call both ~Derived() and ~Base() - how it can be done?
dynamic_cast<Derived*>(basePtr)->~Derived();
したがって、上記のコードの実行後、 basePtr は Base オブジェクトのみを指します。
Base *basePtr = new Base();
さらに、 new Derived() の呼び出しと Derived クラスの破棄の間に basePtr を操作することによって発生した Base オブジェクトへの変更はありますか?
それとも、これは禁止されていて不可能ですか?