Qualcuno sa perché l'oggetto istream può essere usato come espressione bool? Per esempio:Perché l'oggetto istream può essere usato come espressione bool?
ifstream input("tmp");
int iValue;
while (input >> iValue)
//do something;
Qui input >> iValue
restituisce un riferimento all'oggetto ifstream. Voglio sapere perché questo oggetto può essere usato come espressione bool.
Guardo nella classe ifstream e scoprire che questo può essere dovuto al seguente funzione membro:
operator void * () const;
Vedi here per i dettagli su questa funzione.
Se lo è, qualcuno può spiegarmi questa funzione? Il prototipo di questa funzione è diverso dalla normale dichiarazione di sovraccarico dell'operatore. Qual è il tipo di ritorno di questa funzione?
Se non lo è, qual è la ragione per cui l'oggetto ifstream può essere usato come espressione bool?
In attesa del vostro aiuto!
cheng
Bene ha fatto la domanda, pur avendo una risposta dritto in avanti. –
Dato che C++ 11 esiste effettivamente 'esplicito bool operatore()' –