分配操作员返回

时间:2016-04-19 13:56:48

标签: c++ operators return-value implicit assign

我正在研究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吗?

1 个答案:

答案 0 :(得分:1)

不,没有隐含的回报,但在默认模式下,g ++不报告缺少return错误。这样做的原因是缺少return会导致程序格式不正确,而且标准不要求对不良格式的程序进行任何报告。

你需要确保你的g ++始终有以下参数:-Wall -Wextra -Werror -pedantic。这将确保gcc报告此类错误等等。