Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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() {}
like image 886
Matt Munson Avatar asked Aug 24 '16 08:08

Matt Munson


2 Answers

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]

like image 81
songyuanyao Avatar answered Oct 06 '22 08:10

songyuanyao


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

It causes undefined behavior. No one can tell what exactly will happen.

like image 36
πάντα ῥεῖ Avatar answered Oct 06 '22 09:10

πάντα ῥεῖ