在运算符重载中使用 "const" as 参数

use "const" as parameter in operator overloading

本文关键字:const as 参数 运算符 重载      更新时间:2023-10-16

我试图理解运算符重载,在我使用的教程中,有一个重载"+"运算符以添加两个对象的例子。

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

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

要在Quentin的答案基础上进行构建,传入"只读"参数的最有效方法是通过引用或指针(基本上是一样的)将其传入。

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

如果"只读"参数是而不是通过引用或指针传递的,这几乎没有那么重要,但正如我之前所说,这样做效率高得多。

摘要:传入"只读"参数的最佳方式是通过const引用(&)。

我希望这能有所帮助。