什么是C ++ 11的构造函数中的大括号参数

这个问题在这里已经有了答案:

  • C ++ 11有趣的初始化列表,数组和枚举5个答案

  • 这是统一的初始化,一个新的C ++ 11功能。 然而,在你的例子中,它可以被正确地使用。 它应该是:

    Queue(const size_t &cap=8) : head(0),tail(0),count(0),data(cap) {}
    //                                                        ^^^^^
    

    因为其目的是调用std::vector<>的构造函数,它接受std::vector<>的初始大小。 以这种方式调用它:

    data{cap}
    

    或者这样:

    data({cap})
    

    使构造函数接受std::initializer_list (初始化程序列表是C ++ 11的另一个新特性,与大括号初始化紧密相关),从而导致使用一个值为cap单个元素初始化向量。

    您可以在这个现场示例中验证上述声明(代码在下面报告):

    #include <vector>
    
    struct X
    {
        X(int s) : v1({s}), v2{s}, v3(s) { }
        std::vector<int> v1;
        std::vector<int> v2;
        std::vector<int> v3;
    };
    
    #include <iostream>
    
    int main()
    {
        X x(42);
        std::cout << x.v1.size() << std::endl; // Prints 1
        std::cout << x.v2.size() << std::endl; // Prints 1
        std::cout << x.v3.size() << std::endl; // Prints 42
    }
    
    链接地址: http://www.djcxy.com/p/70885.html

    上一篇: What is the curly bracket parameter in the constructor of C++11

    下一篇: Select From Multiple tables Comma Separated