読み取り専用と見なされる基本クラスがあり、その仮想デストラクターでは何もしません。次に、その Base クラスを書き込み可能な Derived クラスに派生させ、そのデストラクタで Base メンバーを削除します。
class Base
{
virtual ~Base() {}
void* Data;
}
class Derive : public virtual Base
{
virtual ~Derive() { delete Data; }
}
Base クラスを参照として受け取る Function に Deriv インスタンスを渡す場合、上記の構文的に正しくないコードは無視します。
void Function(const Base& base)
{
...
}
...
Derive der = Derive();
...
Function(der);
Derived デストラクタは Function スコープの最後で呼び出されますか? 答えを見つけるのに適切なキーワードを探すのに苦労したので、以前に尋ねられた場合は申し訳ありません. 私は、C++ が参照を扱う可能性のある型ではなく、それらが何であるかについて参照を扱うと仮定していますが、私は間違っている可能性があります。