假设我已经实施了*=
,=
和*
运算符重载,您更愿意使用复杂性吗?
谢谢。
答案 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所指出的那样,考虑创建额外副本的开销。