4
这段代码不应该编译,所以为什么它是? if表达式中的上下文的原则是什么?为什么在“if表达式”中发生隐式转换,虽然它应该是明确的转换
class B {
public:
B() {}
explicit operator bool() {}
};
int main(){
B Bp;
//bool check = Bp // error
if (Bp){ //o.k
return 1;
}
return 0;
}
感谢
这是应该编译,这是一个被认为是“明确”的上下文。 – Mat
您可以通过搜索“[C++]上下文转换的布尔”(不带引号)来查找相关文章。 – Mat
什么是被视为“显式”的上下文,我可以在这里找到关于此的一些信息? – user2321876