【发布时间】:2013-10-03 13:52:51
【问题描述】:
我遇到了一些令我惊讶的代码。这在 Visual Studio 2012 中编译并且运行良好。
描述类
class Description {
public:
Description(bool valid = false);
~Description(void);
};
主要
Description functionThatReturnsADescription()
{
return 1;
}
int main()
{
Description theDescription = functionThatReturnsADescription();
}
我的困惑在于functionThatReturnsADescription() 方法;返回描述以外的任何对象是合法的吗?如果我将它设置为return 1,它会使用valid = true 调用Description 构造函数。如果我将其设置为return false 或return 0,它会使用valid = false 调用Description 构造函数。
这是否意味着 C++ 编译器总是使用 return 语句的参数调用函数的返回类型构造函数?我以前怎么不知道?!我会发誓这不是合法的 C++。
【问题讨论】:
-
尝试阅读有关显式关键字的内容
-
@AnatolyS,我很清楚
explicit关键字。我很惊讶 return 语句在返回时调用了构造函数;我一直认为它只是复制了一个已经构建的对象。
标签: c++ visual-studio constructor return return-type