有人知道为什么istream对象可以用作布尔表达式吗?例如:
ifstream input("tmp");
int iValue;
while (input >> iValue)
//do something;
在这里,input >> iValue
返回一个ifstream对象的引用。我想知道为什么这个对象可以用作布尔表达式。
我查看了ifstream类,并发现这可能是由于以下成员函数:
operator void * ( ) const;
请参阅此处以获取有关此函数的详细信息。
如果可以的话,有人能向我解释一下这个函数吗?此函数的原型与通常的运算符重载声明不同。这个函数的返回类型是什么?
如果不是这样,那么为什么ifstream对象可以用作布尔表达式?
期待您的帮助!
explicit operator bool()
。 - M.M