"Effective C++" 的第3条规则是“尽可能使用const”,并且它给出了一个示例:
const Rational operator*(const Rational& lhs,
const Rational& rhs);
为了防止客户能够像这样犯下暴行:
Rational a, b, c;
...
(a * b) = c; // invoke operator= on the result of a*b!
但是函数的非引用返回值不已经是rvalue了吗?那为什么还要这样做呢?
const
修饰符,这个赋值语句将编译通过…… - Oliver Charleswortha * b
返回一个const Rational
,所以你不能在其上执行= c
操作。但是我不同意从运算符中返回const
值。 - rwols