Nav*_*Nav 7 c++ operators visual-c++
我在一个大型代码库中浏览了一些VC++代码并遇到了这样的问题:
if (nState & TOOL_TIPS_VISIBLE)
nState &= ~TOOL_TIPS_VISIBLE;
else
nState |= TOOL_TIPS_VISIBLE;
break;
Run Code Online (Sandbox Code Playgroud)
在C++中是否有像&=或| =这样的运算符?它是为了什么?
它相当于nState = nState & ~TOOL_TIPS_VISIBLE?
没有提到的是,运营商&=和|=运营商都可能超载.因此,您发布的代码取决于nState的类型(虽然它显然是一个int,所以很可能这不适用于此).重载&=不会隐式重载&,所以在这种情况下
x &= y might not be the same as x = x & y
Run Code Online (Sandbox Code Playgroud)
它也可能取决于什么TOOL_TIPS_VISIBLE.
struct s{
int x;
};
void operator &= (int& x, s y)
{
x = 0;
}
Run Code Online (Sandbox Code Playgroud)
现在每当你这样做:
s TOOL_TIPS_VISIBLE;
x &= TOOL_TIPS_VISIBLE;
Run Code Online (Sandbox Code Playgroud)
x将成为0.再一次,极不可能,但很高兴知道.
所有其他答案可能适用于此,但这是值得考虑的.