建構函式中的初始化列表與賦值
在C 中,在建構函式中初始化類別成員有兩種常見方法:使用成員初始化列表或直接在建構函式中賦值。雖然語法不同,但程式碼產生和使用場景可能存在細微差別。
成員初始值設定項列表
成員初始值設定項列表是用逗號分隔的成員初始化列表它位於構造函數中冒號(:) 之後。在您提供的範例中:
MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { }
這會使用指定的值初始化三個成員變數 _capacity、_data 和 _len。此語法適用於初始化常數成員、參考和基底類別建構子。
建構子中的賦值
在替代方法中,您可以為內部的成員變數賦值建構子主體:
MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 }
此語法較常見於初始化非常量成員
程式碼產生與最佳化
編譯器通常會為這兩種方法產生最佳化的程式碼。在大多數情況下,產生的彙編程式碼是相同的。但是,在極少數情況下,在初始化常數成員或設定預設值時,使用成員初始值設定項目清單可以產生更有效率的程式碼。
使用場景
如上所述,初始化常數成員、引用和基底類別建構子需要成員初始值設定項清單。對於其他成員變量,任何一種方法都是可以接受的。但是,使用成員初始值設定項目清單來初始化具有重要構造或初始化要求的成員變數被認為是最佳實踐。
在範例的特定情況下,使用成員初始值設定項目清單或在建構子沒有實際差異。
以上是C 建構函式中的成員初始值設定項清單與賦值:何時應該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!