有谁知道为什么istream对象可以用作bool表达式吗?例如:为什么istream对象可以用作布尔表达式?
ifstream input("tmp");
int iValue;
while (input >> iValue)
//do something;
这里input >> iValue
返回对ifstream对象的引用。我想知道为什么这个对象可以用作布尔表达式。
我期待到ifstream的类和发现,这可能是由于下面的成员函数:
operator void * () const;
有关该功能的详细见here。
如果是这样,任何人都可以向我解释这个功能吗?这个函数的原型与通常的运算符重载声明不同。这个函数的返回类型是什么?
如果不是,那么ifstream对象可以用作bool表达式的原因是什么?
期待您的帮助!
cheng
好问的问题,尽管有一个直截了当的回答。 –
因为C++ 11实际上有'显式运算符bool()' –