【发布时间】:2014-03-12 17:10:29
【问题描述】:
const Byte operator/(const Byte& right) const {
require(right.b != 0, "divide by zero");
return Byte(b / right.b);
}
我读到如果操作符的作用是产生一个新的值,你就需要产生一个新的对象作为返回值。例如,Integer::operator+ 必须生成一个 Integer 对象,它是操作数的总和。该对象按值返回为const,因此无法将结果修改为左值。
如果我们不写成const怎么办?任何带有解释的示例都会有所帮助。
还有为什么我们在函数原型中有第二个const?
【问题讨论】:
-
不再推荐第一个
const。 -
由于没有提到,你通常应该通过调用
operator/=来实现operator/。
标签: c++ operator-overloading constants