【发布时间】:2011-07-12 11:07:51
【问题描述】:
如果我在构造函数中写return语句怎么办?是否符合标准?
struct A
{
A() { return; }
};
上面的代码编译正常,ideone 没有任何错误。但是下面的代码没有:
struct A
{
A() { return 100; }
};
它在ideone 给出了这个错误:
错误:从构造函数返回值
我知道从构造函数返回值根本没有意义,因为它没有明确提到返回类型,而且我们毕竟不能存储返回值。但我很想知道:
- C++ 标准中的哪条语句允许第一个示例但禁止第二个示例?是否有任何显式声明?
- 第一个例子中的返回type是
void吗? - 是否有任何隐式返回类型?
【问题讨论】:
-
我不会自愿重读标准,但我会冒险猜测允许空返回的动机:如果构造函数有分支或循环,那么有时它是很好的能够
returnout。如果return从未被允许,那么开发人员可能只会goto到函数底部定义的标签。
标签: c++ constructor return-value return return-type