これは、この質問のフォローアップです。私がこのコードを持っているとしましょう:
class Class {
public virtual method()
{
this->~Class();
new( this ) Class();
}
};
Class* object = new Class();
object->method();
delete object;
これは、この回答が示唆するものの簡略版です。
これで、オブジェクトの存続期間内からデストラクタが呼び出されると、呼び出し元のコードmethod()
のポインタ変数が無効になります。object
次に、新しいオブジェクトが同じ場所に作成されます。
これにより、呼び出し中のオブジェクトへのポインタが再び有効になりますか?