我找到了一段 C-ish C++ 代码并问自己一个(有点学术性的)问题,这里发生了哪些隐式类型转换才能达到bool
要求if
?
int val;
if( (std::cin >> val) == 0 )
...
我做到了这一点:
std::cin >> val
返回 (a ref to)cin
,因此istream&
- 因此
==
接收cin
和0
作为操作数,即istream
和int
我认为没有bool operator==(istream&, int)
可用的(也没有相应的成员函数istream
),那么是否涉及转换?
需要明确的是,程序员的意图是检查输入是否成功,即是否应该写入if(!(std::cin >> val))
.