2013-06-12 77 views
3

我已經超載了&*。如果我這樣做:操作員過載需要括號

hgh=(xxx&yy)*vprod1;

它按預期工作。

如果我這樣做:

hgh=xxx&yy*vprod1;

我得到一個編譯錯誤Invalid operands to binary expression.

編譯器如何閱讀:hgh=xxx&yy*vprod1; - 那不是移動從左至右,就像在上面的例子中,括號?如果圓括號位於表達式的不同部分,我可以理解編譯器如何讀取它們的差異,但爲什麼在這裏適用?

應該值得注意的是,這兩種過載的返回值是相同的,並返回相同類型xxyy是在該計算中。

回答

8

*優先於&,所以首先應用。你的表達基本上是xxx & (yy * vprod1);

+0

但是,如果運營商是在問題中描述的聲明,我仍然不明白爲什麼有關於無效操作數的錯誤消息。 – jogojapan

+0

@jogojapan錯誤可能是指'operator ='?我同意這很奇怪,其他的東西可能會在那裏... –

+0

可能。它可能不再重要(答案已被接受),但我覺得這個問題有一個缺失。 – jogojapan