Что не было упомянуто, так это то, что операторы &=
и |=
могут быть перегружены. Следовательно, код, который вы разместили, зависит от типа nState (хотя он довольно явно представляет собой int, поэтому, скорее всего, здесь это не применимо). Перегрузка &=
не вызывает явной перегрузки &
, поэтому в этом случае
x &= y might not be the same as x = x & y
Это также может зависеть от TOOL_TIPS_VISIBLE
.
struct s{
int x;
};
void operator &= (int& x, s y)
{
x = 0;
}
Теперь, когда вы делаете:
s TOOL_TIPS_VISIBLE;
x &= TOOL_TIPS_VISIBLE;
x
станет 0
. Опять же, крайне маловероятно, но, тем не менее, полезно знать.
Все остальные ответы, вероятно, применимы и здесь, но это стоит рассмотреть.