What happens when a function that returns an object ends without a return statement

前端 未结 3 1496
走了就别回头了
走了就别回头了 2020-12-06 16:27

In C++, what happens when a function that is supposed to return an object ends without a return statement? What gets returned?

e.g.

std::string func         


        
3条回答
  •  春和景丽
    2020-12-06 17:02

    What gets returned?

    We don't know. According to the standard, the behavior is undefined.

    §6.6.3/2 The return statement [stmt.return]:

    (emphasis mine)

    Flowing off the end of a constructor, a destructor, or a function with a cv void return type is equivalent to a return with no operand. Otherwise, flowing off the end of a function other than main (basic.start.main) results in undefined behavior.

    In fact most compilers would give a warning for it, like Clang:

    warning: control reaches end of non-void function [-Wreturn-type]

提交回复
热议问题