tutorial - c++教學




初始化結構中的默認值 (3)

如果我只需要初始化C ++結構的幾個選擇值,那麼這是正確的:

struct foo {
    foo() : a(true), b(true) {}
    bool a;
    bool b;
    bool c;
 } bar;

我是否正確地假設我最終得到一個名為bar struct項,其元素為bar.a = truebar.b = true和未定義的bar.c


您可以使用構造函數來執行此操作,如下所示:

struct Date
{
int day;
int month;
int year;

Date()
{
    day=0;
    month=0;
    year=0;
}
};

或者像這樣:

struct Date
{
int day;
int month;
int year;

Date():day(0),
       month(0),
       year(0){}
};

在你的情況下,bar.c是未定義的,它的值取決於編譯器(而a和b設置為true)。


您甚至不需要定義構造函數

struct foo {
    bool a = true;
    bool b = true;
    bool c;
 } bar;

澄清一下:這些被稱為大括號或大小相等(因為你也可以使用大括號初始化而不是等號)。 這不僅適用於聚合:您可以在普通的類定義中使用它。 這是在C ++ 11中添加的。


顯式默認初始化可以幫助:

struct foo {
    bool a {};
    bool b {};
    bool c {};
 } bar;

行為bool a {}bool b = bool(); 並返回false





c++