我遇到了以下编译良好的代码(使用 Visual Studio 2005):
SomeObject SomeClass::getSomeThing()
{
for each (SomeObject something in someMemberCollection)
{
if ( something.data == 0 )
{
return something;
}
}
// No return statement here
}
如果方法末尾没有 return 语句,为什么会编译通过?
最佳答案
这是为了支持与 C 的向后兼容性,C 并不严格要求从所有函数返回。在那些情况下,您只剩下返回位置(堆栈或寄存器)中的最后一个值。
如果这是在没有警告的情况下编译,尽管您可能没有将错误级别设置得足够高。大多数编译器现在都会对此发出警告。
关于c++ - 这段 C++ 代码如何在没有 end return 语句的情况下编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400954/