当返回一个对象的函数没有return语句结束时会发生什么 [英] What happens when a function that returns an object ends without a return statement
问题描述
在C ++中,当应该返回一个对象的函数结束时没有return语句会发生什么?返回了什么?
In C++, what happens when a function that is supposed to return an object ends without a return statement? What gets returned?
例如。
std::string func() {}
推荐答案
返回什么?
What gets returned?
b $ b
我们不知道。根据标准,行为未定义。
We don't know. According to the standard, the behavior is undefined.
$ 6.6.3 / 2返回语句
[stmt.return] :
(强调我)
流出一个构造函数,析构函数或者cv
void
返回类型的函数的结束相当于return
,无操作数。否则,流出除main
( basic.start.main )会导致未定义的行为。
Flowing off the end of a constructor, a destructor, or a function with a cv
void
return type is equivalent to areturn
with no operand. Otherwise, flowing off the end of a function other thanmain
(basic.start.main) results in undefined behavior.
会给予警告,例如 Clang :
warning:控制到达非空函数的结束[-Wreturn-type]
warning: control reaches end of non-void function [-Wreturn-type]
这篇关于当返回一个对象的函数没有return语句结束时会发生什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!