Home >Backend Development >C++ >What\'s the Correct Way to Delegate Constructors in C ?
Delegating Constructors
Delegating a constructor involves calling another constructor from within the constructor body to avoid redundant code execution.
Correct Approach
The second code block presented is the correct implementation for constructor delegation in C . It uses the constructor's initialization list:
Bitmap::Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED)) { }
Initialization List
The initialization list allows you to directly initialize an object upon construction. By passing the HBITMAP value to the Bitmap(HBITMAP) constructor in the initialization list, you delegate the construction to the other constructor.
Incorrect Approach
The first code block attempts to delegate using:
Bitmap(BMP);
However, this creates a temporary Bitmap object and does not delegate to the existing constructor.
Delegation Scope
Note that constructor delegation can only occur in the constructor's initialization list and not within the constructor body. Using it within the body would lead to recursive construction, which is not allowed in C .
The above is the detailed content of What\'s the Correct Way to Delegate Constructors in C ?. For more information, please follow other related articles on the PHP Chinese website!