【发布时间】:2015-07-31 13:35:20
【问题描述】:
为什么下面的代码在 C++ 中是合法的?
bool a(false);
我的意思是,T a(VALUE) 应该调用构造函数,对吗?我想它没有被解析为函数声明。但是bool 是普通类型,它没有构造函数。还是这样?
如果相关,我正在使用 Visual Studio 2012。
【问题讨论】:
-
这是合法的,因为语言的设计者是这么说的。将其定为非法的充分理由是什么?
-
int x(5)也是允许的。如果我们愿意,“构造函数”只是一个空操作。 -
为什么普通类型不能有构造函数?
-
我猜它和
int x(5)没有什么不同,只是我以前从未见过这种语法。我只知道bool a { false };和bool a = false;。所以我只是好奇.. -
@Paladin
bool a { false };与bool a(false);相同 {} 表单在 c++11 之前不可用
标签: c++ c++11 visual-c++