12
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没有(显然是因为访问限定符,但逻辑是什么?)。

4

1 回答 1

12

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

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

或者

Foo f = { 0 };

你不能这样做Bar

于 2013-03-25T10:37:30.577 回答