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