プロが教える店舗&オフィスのセキュリティ対策術

VisualStudioにてWindowsフォームアプリを作成する際、自動で以下コードが記載されています。
デストラクタ
protected:
~Form1( ) {
if (components) {
delete components;
}
}

private:
System::ComponentModel::Container ^components;

変数componentsは、定義されてはいるのですが、componentsにAddされているものが無く、デストラクタに削除される為だけに存在している様に見えます。

このcomponentsは何の為に作成されているのでしょうか?

A 回答 (2件)

たとえばタイマーをフォームに追加すると、componentsが使用されることが分かると思います。



このcomponentsというのは、登録した複数のオブジェクトをまとめて開放するためのもので、

delete components;

の1行で、フォーム配下の全タイマーが一気に開放される、という動作になります。

フォームにそのような一気に開放の必要が無い要素が無い場合には使われません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

componentsに追加しない限り、必要無いものだたtのですね。

非常に参考になりました。
追加された際は気をつけて見てみます。

ありがとうございました。

お礼日時:2011/12/11 03:53

> componentsにAddされているものが無く



そうであることを確認しましたか? ホントに空ですか?

この回答への補足

はい。
デストラクタのcomponentsの部分と、
System::ComponentModel::Container ^components;
をコメントアウトしてもコンパイルエラーは起こりませんでした。
ボタン×10個、テキスト×10個、ラベル×10個、コンボボックス×10個
を置いてますが、影響が出ません。

補足日時:2011/11/30 15:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!