class A o; if (o)?



  • Hi,

    wieso funktioniert die if-Abfrage im Codebeispiel? Ist der Operator "==" für die Klasse fstream überladen worden?

    #include <iostream>
    #include <fstream>
    
    int main()
    {
    	std::fstream s("test.dat", std::ios::in);
    	if(s)
    		;
    	else
    		std::cout << "net da";
    }
    

    thx!



  • Hier wird der operator void* aufgerufen, der 0 zurückgibt, wenn fail() true ergibt.



  • dujek schrieb:

    wieso funktioniert die if-Abfrage im Codebeispiel? Ist der Operator "==" für die Klasse fstream überladen worden?

    nö. es macht ja keiner if(o==0)

    irgendwas ist überladen worden, was im if() klappt.
    vielleicht der
    fstream::operator bool()
    vielleicht aber auch int, double, char oder sonstwas.
    vielleicht auch void*.
    oder ganz geschickt
    struct geheim{};
    fstream::operator geheim*()



  • oha, wusste bis eben gar net, dass es einen Konvertierungsoperator gibt 🙂
    danke für die schnellen Antworten


Anmelden zum Antworten