2011-09-08 76 views
0

假设我已经实现了*=,=*运算符重载,您更喜欢使用哪种复杂性? 谢谢。obj1 * = obj2 VS.在C++中obj1 = obj1 * obj2

+1

这里我们再次走,另一个“VS.”问题 –

+1

我不介意“vs”问题。我介意模糊。 “复杂明智”?这些运营商做了什么?小心分享? –

+0

为什么downvotes?我认为这是一个很好的问题... –

回答

2

考虑到我通常会根据operator *=和副本实施operator *,所以没有理由选择operator *

正常执行operator *(和+-/等)通常应如下所示:

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

如果你已经正常实施它们,那么更喜欢*=。另一种方式需要复印,然后将*=应用于其上,然后将其分配回去。

+0

好点。然而,随着新的C++ 11的语义转移,这不算什么开销。 – EddieBytes

+1

@Eddie:所有的小东西加起来。而且由于使用'x * = y'来代替'x = x * y'在性能,个人生产力或代码可读性方面没有任何成本,所以完全没有理由偏好后者。 –

0

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

1

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

相关问题