我不明白这个片段是做什么的,如果有人能解释它会有很大帮助。
bool result;
for (std::set<_Tp>::const_iterator o = objs.begin(); o != objs.end(); o++)
{
//confusion here, what does this do
result |= accept(c, *o, bid); //accept returns a bool
}
return result;
}
我知道|=
复合运算符按位运算,但这对结果的值意味着什么?如果accept返回true,那么result的值将保持为true,对吗?
我想我真的不明白为什么|=
而不是=
任何帮助都会很棒
由于
答案 0 :(得分:3)
|=
是一个按位或不合逻辑的。你已经从代码片段中删除了逻辑,但是只要集合中的任何对象都被“接受”,无论accept
的定义是什么,它基本上都会返回true。
答案 1 :(得分:2)
x |= y
相当于x = x | y
。那是什么
result |= accept(...);
如果result
返回true
,则会将accept
设置为true
- 如果accept
返回false
,则不管它。
|
相反, ||
是按位操作,但对于bool值,它会给出相同的结果。 (并且没有||=
运算符,可能是因为||
具有短路语义。)
我希望这不是所有的代码。在您向我们展示的代码中,result
未初始化。
答案 2 :(得分:0)
它检查函数accept
中的任何一个返回值是否为真。如果您将|=
替换为=
,那么如果最后一次调用accept返回false,则最终结果也将为false。之前的任何值都将被覆盖。使用|=
可以保留以前的结果。