如果使用void返回值(无返回值)声明函数,则函数定义返回任何值都是错误。
如果声明一个函数带有非void返回值(返回一些值或对象),那么如果函数定义无法返回值则不是错误。有些编译器会对此产生缺失 - 返回值警告。
这是什么原因?对我来说,交换它们是有意义的,这样如果你没有返回一个值就会产生错误,如果你试图从一个用void返回类型声明的函数返回一个值,你只会得到一个警告。
答案 0 :(得分:3)
C ++让你有能力用脚射击自己。
编译器判断一个函数是否在所有控制路径上返回适当的东西是非常困难的(如果不是不可能的话)。
因此,就像在使用前必须初始化变量的负担一样,它将它留给程序员。
未明确返回非void
函数的值的行为是 undefined 。