在运算符重载中使用“const”作为参数

时间:2016-04-05 18:12:48

标签: c++ operator-overloading const

我正在尝试理解运算符重载,在我使用的教程中,有一个重载“+”运算符的示例,用于添加两个对象。

  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引用?

2 个答案:

答案 0 :(得分:10)

参数为const,因为您无需修改​​作为参数传递的Box
该方法本身也应标记为const,因为它也不会修改*this

答案 1 :(得分:0)

基于Quentin的答案,传递“只读”参数的最有效方法是通过引用或通过指针(基本上是相同的东西)传递它。

然而,这可能会带来一个问题,因为如果在函数内修改了参数(它不应该,因为你应该将它用作“只读”,但如果它是),那么原始变量传入函数的内容也会被修改。为防止这种情况,参数标记为const

如果“只读”参数通过引用或指针传递,这几乎没有关系,但正如我之前所说,以这种方式执行它会更有效率

摘要:传入“只读”参数的最佳方法是const引用(&)。

我希望这会有所帮助。