运算符重载需要括号

joh*_*ers 3 c++ operator-overloading

&和两个都超载了*.如果我这样做:

hgh=(xxx&yy)*vprod1;

它按预期工作.

如果我这样做:

hgh=xxx&yy*vprod1;

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

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

应该值得注意的是,这两种过载的返回值是相同的,并返回相同的类型xxyy是在该计算中.

Luc*_*ore 8

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