obj1 * = obj2 VS. obj1 = C ++中的obj1 * obj2

时间:2011-09-08 13:24:35

标签: c++ operator-overloading

假设我已经实施了*==*运算符重载,您更愿意使用复杂性吗? 谢谢。

4 个答案:

答案 0 :(得分:2)

鉴于我通常会根据operator *和副本实施operator *=,因此没有理由倾向于operator *

operator *(以及+-/等)的正常实施通常应如下所示:

T operator *(T const& left, T const& right) {
    T result = left;
    return result *= right;
}

答案 1 :(得分:1)

对于像您指定的那样的简单操作,这两种用法都不复杂。但是,对于更长的表达式,* =可以使事情更具可读性。

答案 2 :(得分:0)

如果您已正常实施,请选择*=。另一种方法需要制作副本,然后将*=应用于它,然后再将其分配。

答案 3 :(得分:0)

=和*单独的实现更有用。它允许* b * c * d类型表达式。但是,正如Benjamin Lindley所指出的那样,考虑创建额外副本的开销。