"public"访问限定符和"const"ness`-Wuninitialize

`public` access qualifier and `const`ness. `-Wuninitialized`

本文关键字:quot const ness -Wuninitialize public 访问      更新时间:2023-10-16
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不会(显然是因为访问限定符,但逻辑是什么?(。

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

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

Foo f = { 0 };

你不能为Bar那样做。