delete の機能
delete 演算子は、関数演算子 delete を呼び出します。
クラス型 (class、struct、または union) ではないオブジェクトでは、グローバルな delete 演算子が呼び出されます。 クラス型のオブジェクトでは、delete 式の先頭が単項スコープ解決演算子 (::) である場合に、deallocation 関数の名前がグローバル スコープで解決されます。 それ以外の場合、delete 演算子は、メモリ (ポインターが null でない場合) の割り当てを解除する前に、オブジェクトのデストラクターを呼び出します。 delete 演算子は、クラス単位で定義できます。指定のクラスの定義がない場合、グローバル delete 演算子が呼び出されます。 静的な型に仮想デストラクターが含まれるクラス オブジェクトの割り当ての解放に delete 式を使用した場合、deallocation 関数は動的な型のオブジェクトの仮想デストラクターを通じて解決されます。