美文网首页C++2.0
C++11中的统一初始化方式

C++11中的统一初始化方式

作者: 魏华祎 | 来源:发表于2014-12-26 07:52 被阅读649次

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

    std::string a[] = {"Hello", "world"}; // 正确:初始化数组变量
    std::vector<std::string> v = {"hello", "world"}; // 错误:初始化列表引用在非聚合的向量上
    void f(string a[]);
    f ({"foo", "bar"}); // 语法错误,把一个块(block)作为了参数
    int a = 2;  // "赋值风格"的变化
    int aa[] = {2, 3}; // 用初始化列表进行的赋值风格的初始化
    complex z(1, 2); // 函数风格的初始化
    x = Ptr(y);      // "函数风格" 转换/赋值/构造操作

C++11中的统一的初始化方式:

    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} {/* ... */}
    }

统一的初始化方式可以减少编程中的错误, 使得代码更易阅读.

相关文章

  • C++11中的统一初始化方式

    C++03中有很多种初始化方式: C++11中的统一的初始化方式: 统一的初始化方式可以减少编程中的错误, 使得代...

  • 深入理解C++11 3.5 列表初始化

    3.5.1 初始化列表 C++98中,可以使用"{}"对数组元素进行统一的集合初始值设定,如 而在C++11中可以...

  • c++11新特性之列表初始化

    C++11新增了列表初始化的概念。 在C++11中可以直接在变量名后面加上初始化列表来进行对象的初始化。 列表初始...

  • auto类型推断

    都是自己选择的语言,一条道走到黑。 被问到这样的一个问题?。 在C++11中,支持统一初始化(uniform in...

  • C++11:构造函数及类的初始化

    C++11:初始化 C++11中成员变量的初始化主要包括三类变量: 普通成员变量 常量 静态变量 静态常量 普通成...

  • 列表初始化

    c++11通过了列表初始化的方式。能通过列表初始化的方式去初始化一些自定义的类型。赋值可以采用如下形式:int a...

  • c++11 通用初始化方式

    C++11将使用大括号的初始化(列表初始化)作为一种通用初始化方式,可用于所有类型。 数组初始化 数组以前就可使用...

  • C++如何实现用大括号初始化vector

    在C++11中,vector的初始化和等号赋值都出现了这样的语法 而在C++11以前,我们只能: 看到这种C++1...

  • C++嵌套vector(二维矩阵)的初始化

    初始化一个嵌套的char型嵌套vector,已知C++11允许vector用花括号{}的初始方式,vector元素...

  • [C++11阅读][2-3-2]列表初始化与防止类型收窄

    列表初始化 用大括号{}对变量和数组进行初始化,在C++98中有所限制,C++11解除了限制。 用initiali...

网友评论

    本文标题:C++11中的统一初始化方式

    本文链接:https://www.haomeiwen.com/subject/zjvatttx.html