C でのコンストラクターの委任 : 包括的なガイド
同様の機能を共有する複数のコンストラクターを扱う場合、効率化するために構築を委任する必要があります。初期化プロセス。 C x11 で導入された糖衣構文はこのタスクを簡素化しますが、ニュアンスを理解することが重要です。
コンストラクター委任構文
C でコンストラクターを委任するための正しいアプローチには、以下を使用します。コンストラクターの初期化リスト。次の例を参照してください。
class Bitmap { public: Bitmap(HBITMAP Bmp) { // Construct bitmap } Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED)) { } };
この例では、Bitmap(WORD ResourceID) コンストラクターは、初期化リストを使用して Bitmap(HBITMAP) コンストラクターに委任することでビットマップを初期化します。これにより、不要な一時オブジェクトの作成やエラーの発生を回避できます。
間違ったアプローチ
関数本体を使用して他のコンストラクターを呼び出す、提示された代替構文は正しくありません。これにより、構築を委任する代わりに一時オブジェクトが作成されます。
Bitmap::Bitmap(WORD ResourceID) { HBITMAP BMP = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED); Bitmap(BMP); // Incorrect, creates a temporary }
結論
C でコンストラクターを効果的に委任するには、コンストラクターの初期化を利用することが不可欠です。リスト。この手法を活用すると、不必要なオブジェクトの作成を回避し、コードの効率性と保守性を確保できます。
以上がコンストラクターの委任は C での初期化をどのように効率化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。