我刚刚从 Strawberry Perl 获得的 Windows 版 g++ 中出现了一些奇怪的行为。它允许我省略返回语句。
我有一个成员函数,它返回一个由两个指针组成的结构,称为 a boundTag
:
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
这个函数给了我一些不好的输出,我发现它没有返回语句。我本来打算返回retBoundTag
,但忘记实际编写返回语句。一旦我添加了return retBoundTag;
一切都很好。
但是我已经测试了这个函数并boundTag
从中得到了正确的输出。即使是现在,当我删除 return 语句时,g++ 也会在没有警告的情况下编译它。怎么回事?它猜想返回retBoundTag
吗?