我正在研究this answer的示例,但我忘记输入return *this;
来结束我的赋值运算符,因此Val
的赋值运算符如下所示:
Val& operator= (const int _a) {a = _a; b = _a + fmod(b, 1.0F);}
似乎不应该,但是gcc compiles and runs this code。这怎么可能?这是main
函数,其中隐含return
吗?
答案 0 :(得分:1)
不,没有隐含的回报,但在默认模式下,g ++不报告缺少return
错误。这样做的原因是缺少return
会导致程序格式不正确,而且标准不要求对不良格式的程序进行任何报告。
你需要确保你的g ++始终有以下参数:-Wall -Wextra -Werror -pedantic
。这将确保gcc报告此类错误等等。