【发布时间】:2015-03-04 17:56:06
【问题描述】:
如果这是重复的,请原谅我;我搜索了,但正确的白话可能超出了我的理解范围。
我对一些任意类和重载运算符的目标
x = x op y
会认识到它是自分配的,而不是直接生成一个临时变量 op= 到 x (我不只是想重载 op=)。有没有办法做到这一点?
【问题讨论】:
-
x = x op y不是自分配。您正在使用分配给x的x op y创建一个新值。 -
所以您希望将
x = x + y转换为x += y? -
x op y可以将带有转换运算符的类返回到 x 的类型。赋值运算符可以专门处理该类以优化它。这种优化形式有一个术语,遗憾的是我现在不记得了。 -
@ 0x499602D2 这正是我希望避免的。 @Approaching Yes 完全正确,但 op + 也必须能够检测到它(即 X += Y 和 X = X + Y 应该调用相同的函数)
-
@KarolyHorvath 完成。
标签: c++ class operator-overloading