我正在尝试理解运算符重载,在我使用的教程中,有一个重载“+”运算符的示例,用于添加两个对象。
Box operator+(const Box& b)
{
Box box;
box.length = this->length + b.length;
box.breadth = this->breadth + b.breadth;
box.height = this->height + b.height;
return box;
}
为什么参数需要是对象的const引用?
答案 0 :(得分:10)
参数为const
,因为您无需修改作为参数传递的Box
。
该方法本身也应标记为const
,因为它也不会修改*this
。
答案 1 :(得分:0)
基于Quentin的答案,传递“只读”参数的最有效方法是通过引用或通过指针(基本上是相同的东西)传递它。
然而,这可能会带来一个问题,因为如果在函数内修改了参数(它不应该,因为你应该将它用作“只读”,但如果它是),那么原始变量传入函数的内容也会被修改。为防止这种情况,参数标记为const
。
如果“只读”参数不通过引用或指针传递,这几乎没有关系,但正如我之前所说,以这种方式执行它会更有效率
摘要:传入“只读”参数的最佳方法是const
引用(&
)。
我希望这会有所帮助。