我虽然对运算符重载,并配备了一个有趣的代码:逻辑运算符的执行顺序
#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是我已经尝试过,但我无法解释它是如何工作的。 –