C++11中的統(tǒng)一初始化方式

C++03中有很多種初始化方式:

    std::string a[] = {"Hello", "world"}; // 正確:初始化數(shù)組變量
    std::vector<std::string> v = {"hello", "world"}; // 錯誤:初始化列表引用在非聚合的向量上
    void f(string a[]);
    f ({"foo", "bar"}); // 語法錯誤,把一個塊(block)作為了參數(shù)
    int a = 2;  // "賦值風(fēng)格"的變化
    int aa[] = {2, 3}; // 用初始化列表進(jìn)行的賦值風(fēng)格的初始化
    complex z(1, 2); // 函數(shù)風(fēng)格的初始化
    x = Ptr(y);      // "函數(shù)風(fēng)格" 轉(zhuǎn)換/賦值/構(gòu)造操作

C++11中的統(tǒng)一的初始化方式:

    X x1 = X{1, 2};
    X x2 = {1, 2};
    X x3{1, 2};
    X * p = new X{1, 2};

    struct D : X {
        D(int x, int y) : X{x, y} {/* ... */}
    }

    struct S {
        int a[3];
        S(int x, int y, int z) : a{x, y, z} {/* ... */}
    }

統(tǒng)一的初始化方式可以減少編程中的錯誤, 使得代碼更易閱讀.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容