[英]How to properly initialize the data members in C++11?
在C ++ 11中,我們有兩種方法可以初始化類/結構的數據成員,如以下示例所示:
struct A
{
int n = 7;
};
struct B
{
int n;
B() : n(7) {}
};
問題1:
哪種方法更好?
問題2:
從現代C ++樣式檢查器的角度來看,是否不鼓勵采用傳統方式(后者)?
您實際上可以混合兩種樣式。 如果您有多個構造函數,這很有用,但是變量僅由一個或幾個構造函數專門初始化。
例
struct A
{
int n = 7;
A() {} // n will be initialized to 7
A(int n_): n{n_} {} // Initialize n to something else
};
我不確定,但是我認為第一種情況僅適用於C ++基本類型。 在大多數書中,尤其是Scott Meyers的《 55種改進C ++代碼的方法》一書中,建議采用第一方法,所以我會堅持這樣做。 :-)
不要忘記,評估和初始化的順序決定了類中成員的排序方式。
我只喜歡第二種初始化樣式。
兩種方法都沒有更好的選擇,但是,新的統一初始化具有與其他語言相似且更易於理解的優點。 統一初始化不僅適用於結構成員,而且適用於初始化程序列表和構造函數參數的全面初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.