【发布时间】:2014-08-25 12:00:39
【问题描述】:
我想知道在 C++ 中编写 operator + 的正确方法是什么(假设我正在为类 c 定义的对象定义加法运算符)?
c c::operator+(const c rhs) { /* do addition */ }
或
c c::operator+(const c& rhs) { /* do addition */ }
【问题讨论】:
-
通常,作为非成员,采用两个 const 引用(有些人可能认为最好按值采用一个参数,我倾向于不同意这一点。)
-
const c& 会更高效,因为您通过引用传递,因此不会复制
-
@juanchopanza 谢谢。但是如果我想把它们写成成员(就像上面一样)呢?
-
你不应该这样。您可能希望将
operator+=实现为成员,然后在非成员operator+中使用它 -
@PBM:可能会带来一些便利,但会以丢失复制省略机会为代价。如果你想通过引用来获取参数,你应该编写两个重载,一个用于 const-lvalue,一个用于 rvalue 引用。