C++

デストラクタはオブジェクトの寿命が終了した直後に自動的に呼び出される。具体的には自動変数ならばスコープを抜けた直後、静的オブジェクトならばプログラム終了直前、new演算子で生成したオブジェクトならばdelete演算子が適用された時である。主にコンストラクタで確保したリソースを解放するための処理が記述される。 派生クラスの場合は、まず派生クラスのデストラクタが呼ばれて派生クラスによる追加部分が解体されてから、基底クラスのデストラクタが順次呼ばれることでオブジェクトが解体される。基底クラスのポインタで派生クラスのインスタンスをポリモーフィックに利用する場合は、基底クラスのデストラクタを仮想関数にしなければならない(仮想デストラクタ)。これはポインタが参照するインスタンスをdeleteする際に呼び出されるデストラクタがポインタの型で決定されるため、基底クラスのデストラクタが仮想でない場合は、基底クラスのデストラクタだけが呼ばれて派生クラスのデストラクタが呼ばれないためである。基底クラスが仮想デストラクタを持っていれば、実際のインスタンスに応じて派生クラスのデストラクタが正しく呼び出される。

自動変数

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

Recent Updates

リンク1

  • 大阪風俗ニュース事件簿では、日々の風俗関連ニュースを掲載中です。

  • メンズスパ 求人

  • アダルトグッズ激安専門店です。期間限定キャンペーン実施中。

  • 人気オナホールを販売中。あなたに合った商品を見つけましょう。

  • 福原 求人

  • 川崎 風俗 求人

  • 福岡 風俗 求人

  • ピンク電マでパートナーと楽しいひと時を過ごしましょう。

  • 渋谷の美女専門風俗といえばもちろんココ。

  • 京都 風俗 求人

  • ローション通販なら赤字覚悟の激安特価。

  • 大阪のデリヘルならクラブゴージャスが断然オススメ

  • メル友ランドでコミュニティを思いっきり楽しもう。

  • 今若い女性に大人気のセレブローターが売れています。


  • リンク2