web-dev-qa-db-ja.com

デストラクタパラメータ

記事 デストラクタはオーバーロード可能ですか? は、デストラクタのオーバーロードについて説明しています。

これは疑問を投げかけました:デストラクタはパラメータを持つことができますか?

パラメータを持つデストラクタを使用したことも、見たこともありません。デストラクタにパラメータを使用する理由の例を思い付くことができませんでした。

34
Thomas Matthews

C++ 0xドラフトn3290のセクション§12.4では、デストラクタについて次のように述べています。

デストラクタ

オプションの関数指定子(7.1.2)に続く〜に続いてデストラクタのクラス名、さらに空のパラメータリストを使用した特別な宣言子構文を使用して、クラス定義でデストラクタを宣言します。

(強調を追加)

したがって、デストラクタはパラメータを取りません。 (2003年の規格には、上記の段落の正確な表現があります。)

42
Mat

いいえ、簡単な答えです。デストラクタがどのパラメータを取得し、どこから取得するのかを心配する必要があるため、これは自動リソース管理を大きな問題にしてしまいます。例外の場合はどうですか?コンパイラはどのようにデストラクタを渡すかを知っていますか?

8
Puppy

いいえ、とにかく直接呼び出すことはほとんどないので、何を使うのでしょう。

デストラクタはオブジェクトを破棄することになっています。

2
Bo Persson