当我运行代码时
istream s;
if (s)
// ...
我可以测试 istream(或任何 ios 对象)的真值。据我了解,这是因为 ios 定义operator!
函数的方式。(供参考,http://www.cplusplus.com/reference/ios/ios/operatornot/。)我的问题是:为什么s
像上面那样放入 if 语句会导致operator!
函数被评估?作为第二个问题,如果我将任何对象放在 if 语句中,C++ 将使用哪些可能的方式来评估其真实性?