デストラクタ
基底クラスが仮想デストラクタを持っていれば、実際のインスタンスに応じて派生クラスのデストラクタが正しく呼び出される。
自動変数のデストラクタは、例外でブロックを脱出した際にも呼び出される。そのため、コンストラクタでリソースを確保し、デストラクタでリソースを解放するクラスを自動変数として生成することで、ブロック中のどこから例外が投げられてもリソースの解放が確実に行われる。このイディオムをRAII (Resource Acquisition Is Initialization) という。
デストラクタは例外を投げるべきではない。先に述べたようにデストラクタは例外伝播中にも呼ばれる可能性があるが、その時にデストラクタがさらに例外を投げると二重例外となり、プログラムの強制終了を招くからである。
デストラクタは、プログラマが定義しない場合にC++コンパイラが暗黙に生成するメンバー関数のうちの一つである。暗黙のデストラクタの仕様は「中身が空」で「非仮想」となっている。
デストラクタの名前は、クラス名の前に~記号を付けたものと決められている。