首頁 >後端開發 >C++ >C 建構函式委託:為什麼要在成員初始化清單中初始化?

C 建構函式委託:為什麼要在成員初始化清單中初始化?

Susan Sarandon
Susan Sarandon原創
2024-11-25 11:05:17643瀏覽

C   Constructor Delegation:  Why Initialize in the Member Initializer List?

委託建構子:深入探究

C 中的建構子委託是一種允許建構函式呼叫同一類別的另一個建構函數的技術。當多個建構函式執行類似操作時,它對於減少程式碼重複很有用。

在提供的範例中,目標是使用不同的參數類型(例如 HBITMAP 或 WORD ResourceID)委託 Bitmap 物件的建構。問題中提出的第二種方法正確地演示了初始化列表中的構造函數委託:

Bitmap::Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(...)

此語法使用 HBITMAP 構造函數初始化 Bitmap 對象,並將加載的資源作為參數傳遞。這優於第一種方法,第一種方法將建立一個臨時 HBITMAP 對象,然後嘗試委託給 HBITMAP 建構子。

建構函式委託只能在建構函式的初始化清單中完成。如果您嘗試從建構函式主體進行委託(如第一種方法所示),則會導致錯誤或意外行為。

以上是C 建構函式委託:為什麼要在成員初始化清單中初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn