我雖然對運算符重載,並配備了一個有趣的代碼:邏輯運算符的執行順序
#include <iostream>
class A {
public:
operator bool() {
return true;
}
bool operator!() {
return false;
}
};
int main() {
A a;
if (!a) {
std::cout << "HELLO";
} else {
std::cout << "WORLD";
}
std::cout << std::endl;
return 0;
}
什麼將被稱爲第一,之後是什麼?爲什麼?這在cppreference的任何地方都有描述嗎?
P.S.對於downvoters和其他誰認爲我不能自己執行此代碼。我可以。我做到了。我已經多次改變它來看它的行爲。所以呢?這不是一個解釋。我已經要求參考哪個明確說明什麼規則這個代碼服從。它在我的機器上的工作方式並不能回答這個問題 - 如果這種方式在不同的環境(操作系統,可能是處理器等)中甚至不可移植?
您是否嘗試過? https://ideone.com/sW8yEm – mch
沒有什麼會被稱爲第一次和之後。只調用'operator!'。 – StoryTeller
@mch是我已經嘗試過,但我無法解釋它是如何工作的。 –