?: oder if-else ?
-
Hi,
Also ich finde
Ausdruck ? Ausdruck1 : Ausdruck2
syntaktisch irgendwie nicht so toll wieif(Ausdruck)
Ausdruck1
else
Ausdruck2Bringt das Auswahloperatording irgendwelche Vorteile oder kann ich immer if-else verwenden ?
Danke und Tschö
[ Dieser Beitrag wurde am 26.05.2003 um 17:44 Uhr von Falky editiert. ]
-
Du kannst den ?-Operator zum Beispiel in einer Initialisierungsliste eines Konstruktors benutzen (wo if-else nicht möglich ist)
-
oder in einem funktionsaufruf:
pos (s_x+(i>=0?i:-i), s_y+k);
-
Hallo,
der Vorteil des ?:-Operators ist, dass man ihn in Ausdrücken verwenden kann.
Neben dem Einsatz in der Initialisierungsliste, wird er deshalb auch häufig bei der Objekterzeugung verwendet.
Beispiel:std::string boolAsString(boolValue ? "true" : "false");
Ohne den ?:-Operator müsste ich hier Erzeugung und Initialisierung trennen oder auf die Verwendung eines Zeigers umsteigen.
Erzeugung und Initialisierung kann man aber auch nicht immer trennen.
Für Referenzen und Konstanten die mit einem von einer Bedingung abhängenden Wert initialisiert werden sollen, bleibt nur der ?:-Operator.Auch können if-then-else-Anweisungen im Gegensatz zum ?:-Operator nicht in Compilezeitkonstrukten (Template-Metaprogrammierung) verwendet werden.
Häufig finde ich persönlich den resultierenden Code auch einfacher.
Bsp:string result((!outputDir_.empty() ? outputDir_ : dir) +read+".html");
Das ist IMO deutlich besser als:
string result; if (!outputDir_.empty()) result += outputDir_; else result += dir; result += read+".html";