【问题标题】:why default initialization using parentheses is not permissible in c++? [duplicate]为什么在 c++ 中不允许使用括号进行默认初始化? [复制]
【发布时间】:2017-09-10 02:53:48
【问题描述】:

这是来自 Effective modern c++ 的示例。

class Widget {
…
private:
int x{ 0 }; // fine, x's default value is 0
int y = 0; // also fine
int z(0); // error!
};

【问题讨论】:

    标签: c++ c++11 c++14 uniform-initialization


    【解决方案1】:

    直接初始化使用()

    类内处理如下
    int z(0);

    作为函数作为并期望参数。作为结果错误

    预期的参数声明符

    也可以这样做

    class Widget {
    private:
        int x{ 0 };
        int y = 0;
        int z;
    public:
        Widget():z(0){}
    };
    

    【讨论】:

    • 这是错误的。 std::string s(""); 在这里也不起作用,int z(0); 在其他情况下是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2019-05-25
    • 1970-01-01
    • 2016-04-26
    • 2020-08-03
    • 2015-12-02
    相关资源
    最近更新 更多