为什么这个C++编译?

sho*_*app 0 c++ return function

可能重复:
为什么可以从非void函数返回而不返回值而不产生编译器错误?

为什么gcc 4.6.1在没有return语句的情况下编译以下函数?

uint32_t& siof_solution() {
   static uint32_t example = (uint32_t) 7; // Doesn't really matter
   // return example;
}
Run Code Online (Sandbox Code Playgroud)

它回来了1. 我看到了它.

tem*_*def 9

即使他们说C++函数也是如此,它们不需要返回值.如果他们不这样做,结果是未定义的行为.在你的情况下,通过Sheer Dumb Luck,代码似乎正在工作,但它不便携而且不安全.这可能会崩溃,返回垃圾指针,导致调试错误等.

我认为这个决定的原因主要是与C的向后兼容,尽管我不确定.

希望这可以帮助!