Почему объект istream может использоваться как выражение типа bool?

Кто-нибудь знает, почему объект istream можно использовать как выражение типа bool? Например:

ifstream input("tmp");
int iValue;
while (input >> iValue)
    //do something;

Здесь input >> iValue возвращает ссылку на объект ifstream. Я хочу знать, почему этот объект можно использовать как выражение типа bool.
Я изучил класс ifstream и обнаружил, что это может быть связано со следующей функцией-членом:

operator void * ( ) const;

См. здесь для получения подробной информации об этой функции.
Если да, может ли кто-нибудь объяснить мне эту функцию? Прототип этой функции отличается от обычного объявления перегрузки оператора. Каков тип возвращаемого значения этой функции?
Если нет, то по какой причине объект ifstream можно использовать как выражение типа bool?
Жду вашей помощи!

cheng

23
задан Saurav Sahu 28 October 2016 в 08:29
поделиться