ホームページ >バックエンド開発 >C++ >C でコンストラクターを委任する正しい方法は何ですか?

C でコンストラクターを委任する正しい方法は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-20 15:34:19217ブラウズ

What's the Correct Way to Delegate Constructors in C  ?

コンストラクターの委任

コンストラクターの委任には、冗長なコードの実行を避けるためにコンストラクター本体内から別のコンストラクターを呼び出すことが含まれます。

正解アプローチ

提示された 2 番目のコード ブロックは、 C でのコンストラクター委任の正しい実装です。コンストラクターの初期化リストを使用します。

Bitmap::Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED))
{
}

初期化リスト

初期化リストを使用すると、構築時にオブジェクトを直接初期化できます。 HBITMAP 値を初期化リストの Bitmap(HBITMAP) コンストラクターに渡すことにより、構築を他のコンストラクターに委任します。

間違ったアプローチ

最初のコード ブロック

Bitmap(BMP);

を使用して委任を試みますが、これにより一時的なビットマップが作成されます

委任範囲

コンストラクターの委任はコンストラクターの初期化リスト内でのみ発生し、コンストラクター本体内では発生しないことに注意してください。これを本体内で使用すると再帰的な構築が行われることになりますが、これは C では許可されていません。

以上がC でコンストラクターを委任する正しい方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。