假设我有一个如下定义的类:
class foo{};
Run Code Online (Sandbox Code Playgroud)
现在,这是完全可以接受的;
foo f;
Run Code Online (Sandbox Code Playgroud)
怎么会出现编译错误?(uninitialized const ‘f’)
const foo f;
Run Code Online (Sandbox Code Playgroud)
我们为什么要这样做?
const foo f = foo();
Run Code Online (Sandbox Code Playgroud)
我知道为什么我们不能这样做..
const foo f(); // though it compiles..
Run Code Online (Sandbox Code Playgroud)
有趣的是,以下内容是有效的:
const std::string f;
Run Code Online (Sandbox Code Playgroud)
那么缺少foo什么?
我意识到那里有三个问题,这是一个糟糕的形式,但我希望有人可以在一个答案中为我解决这个问题.
编辑:如果它是愚蠢的,请随时关闭它...