問題:
是否在 C 範圍內使用與成員變數同名的建構子參數來初始化成員變數的標準?
例:
class Blah { std::vector<int> vec; public: Blah(std::vector<int> vec): vec(vec) {} };
答案:
是的,它是合法的,並且保證按照C 標準工作。
說明:
C 的第12.6.2/7 節標準規定,「mem-initializer 的表達式清單中的名稱在指定mem-initializer 的構造函數的範圍內進行評估。
這允許我們使用建構函數參數的值初始化成員變量,如範例所示。
注意:
建議對建構子參數使用 const 引用,以避免不必要的物件複製。因此,最好使用:
Blah(const std::vector<int> &vec): vec(vec) {}
以上是同名建構函式初始化:符合 C 標準嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!