class
のユーザー定義デストラクタが存在せず、1つが必要な場合、コンパイラは暗黙的にデストラクタを宣言します。自分のデストラクタを宣言する必要があるときは?私自身のデストラクタを宣言する必要があるときは?
答えて
暗黙のうちに宣言されたデストラクタは、必要な処理を実行しません。
これはやや複雑です。検索してrule of threeを調べる必要があります。
Googleへのリンクを投稿するのではなく、[この優秀なSO質問](http://stackoverflow.com/questions/4172722)へのリンクを投稿してください。 –
私はそれを行うと検索結果で4位です。 :) –
また、多態性クラスが必要な場合は、空の仮想デストラクタを宣言する必要があるということもあります。 –
メモリを割り当てる場合は、オブジェクトを作成するか、コンストラクタ内で作成するか、それ以降はオブジェクトを破棄するときにクリーンアップする必要があります。
何かが完了したことを確認したいとき。 '何か'は、通常、ネットワーク接続やファイルを閉じたり、メモリなどを解放したりします。
オブジェクトの破壊に関する特別なタスク、つまりメモリの割り当て解除、ネットワーク接続のクローズ、スレッド同期、スローされた例外のスローなど
「ストアされた例外をスローする」 - 警告ですが、デストラクタからスローすることは軽くやりたいことではありません!可能な場合は限られたケースがありますが、あなたのプログラムが有用なことを伝えずに終了する状況を避けることはかなり困難です。 –
- 1. クラスを自分自身のメンバーとして宣言する
- 2. フォワード宣言とデストラクタ
- 3. 私自身のWeb APIを使用する必要があります
- 4. ボタンはC#で自分自身を参照する必要があります
- 5. web.configでhttpsを宣言する必要がありますか?
- 6. 識別子 'UTILS.IDENTITY_VALUE'を宣言する必要があります
- 7. app.yamlでindex.htmlを宣言する必要がありますか?
- 8. テーブル変数@tableを宣言する必要があります
- 9. エラー:スカラー変数を宣言する必要があります
- 10. Objective-C:プライベートメソッドを宣言する必要がありますか?
- 11. スカラー変数を宣言する必要があります。
- 12. スカラー変数を宣言する必要がありますか?
- 13. スカラー変数 "@UserName"を宣言する必要があります
- 14. テーブル変数を宣言する必要があります
- 15. インターフェイスを再宣言する必要があるのはなぜですか?
- 16. Facebook og:typeメタタグ - 私は自分自身を構成する必要がありますか?
- 17. 私の変数は、なぜvar宣言の中にあるときに 'var'宣言が必要なのですか?
- 18. AtomicReferenceをvolatileとして宣言する必要がありますか?
- 19. Hibernateエラー:org.xml.sax.SAXParseException:要素タイプ "hibernate-mapping"を宣言する必要があります
- 20. HttpServletクラスを抽象として宣言する必要はありますか?
- 21. プライベート変数を参照するとき、this.variableName宣言が必要ですか?
- 22. ネイティブモジュールはIIS7のグローバルモジュールで宣言する必要がありますか?
- 23. contanerが私の身長を計算する必要がありますか?
- 24. Cocoaでオブジェクトを宣言するとき、それらをnilに設定する必要がありますか?
- 25. 私のC++インラインメソッドをインラインとして明示的に宣言する必要がありますか?
- 26. それ自身の宣言内のクラスを使用
- 27. 仮想デストラクタをデフォルトにする必要がありますか?
- 28. PIMPLにデストラクタを提供する必要があります
- 29. は、なぜ私は、派生クラスでそれを隠すことができたときに仮想メソッドを宣言する必要があります
- 30. ジェネリックサブクラスで型制約を再宣言する必要がある理由
クラスには常にデストラクタがあります。 –
しかし、必ずしもユーザー定義のデストラクタではありません。 – GolezTrol
[こちら](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three)を参照してください。 –