簡體   English   中英

初始化 class 體內的數據成員

[英]Initializing data members inside class body

何時應該使用構造函數直接在類/結構體內部初始化數據成員?

struct A{
    int x;
    A() : x{3} {}
};

struct B{
    int x{3};
};

以上兩種方法的效果是一樣的。

如果值取決於構造函數參數,則必須使用成員初始化列表。 如果單獨的構造函數應該用不同的值初始化成員,也必須使用它。 它還必須在 C++11 之前使用,因為這是引入默認成員初始化程序的語言版本。

否則選擇取決於程序員。 默認成員初始化器對於避免使用相同的常量值初始化的構造函數中的重復以及具有更簡潔和更簡單的語法很有用。

我想指出一個區別。

struct B{
    int x{3};
};

上述初始化適用於所有未顯式初始化 x 的構造函數。

以下初始化僅適用於默認構造函數。 因此,如果您遵循以下方法,當初始化的值相同時,您最終可能會得到很多樣板代碼。

struct A{
    int x;
    A() : x{3} {}
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM