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

发布于 2024-12-03 11:16:10 字数 86 浏览 0 评论 0原文

假设我已经实现了 *==* 运算符重载,您更喜欢使用哪个复杂性? 谢谢。

Assuming that i've implemented *=, = and * operators overloading, which will you prefer to use complexity wise?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

薆情海 2024-12-10 11:16:11

鉴于我通常会根据 operator *= 和副本来实现 operator *,因此没有理由更喜欢 operator *

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

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

Given that I’d usually implement operator * in terms of operator *= and a copy, there is no reason ever to prefer operator *.

The normal implementation of operator * (and +, -, / etc.) should usually look as follows:

T operator *(T const& left, T const& right) {
    T result = left;
    return result *= right;
}
绝不放开 2024-12-10 11:16:11

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

Both usages are NOT complex for simple operations like the one you have specified. But, for longer expressions, *= can make things more readable.

旧时光的容颜 2024-12-10 11:16:11

如果您已经正常实现了它们,那么更喜欢 *=。另一种方法需要制作一个副本,然后对其应用 *= ,然后将其分配回来。

If you've implemented them normally, then prefer *=. The other way will require making a copy, then applying *= to it, then assigning it back.

丶情人眼里出诗心の 2024-12-10 11:16:11

= 和 * 单独的实现更有用。它允许a*b*c*d类型的表达式。然而,正如本杰明·林德利 (Benjamin Lindley) 所指出的,请考虑创建额外副本的开销。

The = and * separate implementations are more useful. It allows a * b * c * d type expressions. However consider the overhead of additional copies being created, as noted by Benjamin Lindley.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文