C 中的構造函數委託
在C 中,可以將一個構造函數委託給另一個構造函數,從而允許在多個建構函式之間重複使用初始化程式碼。這種做法可以簡化程式碼並減少重複。
完成建構函式委託的一種方法是透過建構函式的初始化列表,如您提供的第二個範例所示:
Bitmap::Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED)) { }
在此範例中, Bitmap(WORD ResourceID) 的建構子委託給Bitmap(HBITMAP),將載入的映像作為參數傳遞給委託的建構子。此語法可確保 Bitmap(WORD ResourceID) 建構子不會建立臨時變數或執行不必要的重複初始化。
您在第一個範例中質疑的替代方法確實會建立一個臨時 Bitmap 對象,然後使用傳遞給 Bitmap(WORD ResourceID) 的 HBITMAP 呼叫該物件的建構子。雖然這在某些情況下可能有效,但它不是委託構造函數的最有效或正確的方法。
因此,建議使用建構函式的初始化清單進行建構函式委託,如您的第二個程式碼片段所示假如。這確保了正在建構的物件的有效和正確的初始化。 G 4.7.2及以後版本應該支援此功能。
以上是C語言中如何有效率地實現建構函數委託?的詳細內容。更多資訊請關注PHP中文網其他相關文章!