运算符重载需要括号

时间:2013-06-12 05:37:20

标签: c++ operator-overloading

我已经超载了&*。如果我这样做:

hgh=(xxx&yy)*vprod1;

它按预期工作。

如果我这样做:

hgh=xxx&yy*vprod1;

我收到编译错误Invalid operands to binary expression.

编译器如何阅读:hgh=xxx&yy*vprod1; - 它是否会从左向右移动,就像在上面的示例中一样,带括号?如果括号位于表达式的不同部分,我可以理解编译器如何读取它可能存在差异,但为什么这会适用于此?

值得注意的是,两个重载的返回值是相同的,并且在此计算中返回与xxyy相同的类型。

1 个答案:

答案 0 :(得分:8)

*的优先级高于&,因此首先应用它。你的表达基本上是xxx & (yy * vprod1);