我遇到了一些令我惊讶的代码。这在 Visual Studio 2012 中编译并且运行良好。
描述类
class Description {
public:
Description(bool valid = false);
~Description(void);
};
主要的
Description functionThatReturnsADescription()
{
return 1;
}
int main()
{
Description theDescription = functionThatReturnsADescription();
}
我的困惑在于functionThatReturnsADescription()
方法;返回描述以外的任何对象是合法的吗?如果我将其设置为return 1
,它会使用 调用 Description 构造函数valid = true
。如果我将它设置为return false
or return 0
,它会使用 . 调用 Description 构造函数valid = false
。
这是否意味着 C++ 编译器总是使用 return 语句的参数调用函数的返回类型构造函数?我以前怎么不知道?!我会发誓这不是合法的 C++。