赋值运算符 Return

Assignment Operator Return

我正在为 编写示例,但我忘记键入 return *this; 来结束我的赋值运算符,因此 Val 的赋值运算符如下所示:

Val& operator= (const int _a) {a = _a; b = _a + fmod(b, 1.0F);}

似乎不​​应该,但是 gcc compiles and runs this code。这怎么可能?这是否类似于隐含的 returnmain 函数?

不,没有隐含的 return,但在默认模式下,g++ 不会将丢失的 return 报告为错误。原因是缺少 return 会使程序格式错误,而标准不要求任何格式错误的程序报告。

您需要确保您的 g++ 始终具有以下参数:-Wall -Wextra -Werror -pedantic。这将确保 gcc 会报告类似的错误以及更多错误。