削除のしくみ
delete は operator delete 関数を呼び出します。
クラス型 (クラス構造体または 共用体) オブジェクトにはグローバル削除操作が呼び出されます。クラス型のオブジェクトに対して解放の関数の名前はグローバル スコープで削除式で単項スコープ解決演算子で始まる場合は解決されます (::)。それ以外の場合は削除操作はメモリを解放する前に (ポインターが null 以外の場合) オブジェクトのデストラクターを呼び出します。削除操作はクラス単位で定義できます。; 特定のクラスのこのような定義がない場合はグローバル演算子の削除が呼び出されます。静的な型に仮想デストラクターを持ったクラス オブジェクトを解放するために delete 式を使用している場合解放の関数はオブジェクトの動的な型に仮想デストラクターを使用して解決されます。