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
不会产生警告(显然是因为访问限定符,但逻辑是什么?)。
答案 0 :(得分:12)
根据这些定义,由于Foo::x
是公开的,因此您可以使用以下内容有效地实例化Foo
:
Foo f { 0 }; // C++11
或
Foo f = { 0 };
Bar
无法做到这一点。