`public`访问限定符和`const`ness。 `-Wuninitialized`

时间:2013-03-25 10:31:22

标签: c++ warnings member access-specifier

class Foo
{
    public:
        const int x;
};

class Bar
{
    private:
        const int x;
};

输出:

test.cpp:10:13: warning: non-static const member ‘const int Bar::x’ in class without a constructor [-Wuninitialized]

为什么Bar会产生警告但Foo不会产生警告(显然是因为访问限定符,但逻辑是什么?)。

1 个答案:

答案 0 :(得分:12)

根据这些定义,由于Foo::x是公开的,因此您可以使用以下内容有效地实例化Foo

Foo f { 0 }; // C++11

Foo f = { 0 };

Bar无法做到这一点。