Condition-Auswertung
-
Hallo.
if (some_object) irgendwas;
Wie genau wird nun entschieden, ob some_objekt true oder false ist? Mit static_cast<bool>?
-
Das kommt drauf an. Wenn some_object einen operator bool() bereitstellt, wird der genommen. Wenn some_object einen Conversion-operator bereitstellt, der in etwas nach bool konvertierbares konvertiert, wird dieser genommen.
-
Wenn some_object einen Conversion-operator bereitstellt, der in etwas nach bool konvertierbares konvertiert, wird dieser genommen.
Und was wäre das? Geht der Compiler dann alle Conversion-operators durch und prüft für jeden, ob der daraus folgende Typ zu bool konvertierbar ist?
-
Beispiel: C++ Streams.
C++ Streams haben einen operator void*(), deshalb kann ich überprüfen, ob der Stream "good" ist, indem ich if(stream) schreibe. Hier wird der operator void*() verwendet, und void* ist nach bool konvertierbar.
-
Wurstinator schrieb:
Wenn some_object einen Conversion-operator bereitstellt, der in etwas nach bool konvertierbares konvertiert, wird dieser genommen.
Und was wäre das? Geht der Compiler dann alle Conversion-operators durch und prüft für jeden, ob der daraus folgende Typ zu bool konvertierbar ist?
Ja, genau das.
-
In Ordnung, danke sehr.