Diskussion:C++-Programmierung: Liste der Operatoren nach Priorität

Aus Wikibooks
Zur Navigation springen Zur Suche springen

operator::[Bearbeiten]

Auch wenn er in vielen Tutorials leider als Operator auftaucht, so ist doch :: kein Operator im eigentlichen Sinne, sondern eher ein Token zum Bilden von hierarchischen Namen (engl: nested names specifier). Siehe Kapitel 5.1.7. im ISO-Standard.

Dass :: kein Operator ist, erkennt man daran, dass man ihn z.B. nicht klammern kann:

A::B::C;    // okay, sofern A, B und C geeignet definiert sind.
(A::B)::C;  // auch okay, aber ist ein C-Style-Cast von ::C nach A::B.
A::(B::C);  // Syntaxfehler!

Er sollte daher aus der Operatorliste entfernt werden, ggf. kann man eine Fußnote schreiben, wieso er in der Operatorliste nicht auftaucht, falls ihn dort jemand vermissen sollte. --RokerHRO 22:26, 21. Aug. 2007 (CEST)[Beantworten]

throw[Bearbeiten]

Die Liste, die ich in meinem Tutorial anhand der Tabelle im Stroustrups "The C++ Programming Language" erstellt habe, gibt throw eine höhere Rangfolge als dem Komma-Operator. Ebenso der C++-Standard, der die Operatorrangfolgen über die Syntaxdefinition für Ausdrücke definiert, legt in Anhang A.4 fest:

assignment-expression:
conditional-expression
logical-or-expression   assignment-operator   assignment-expression
throw-expression

und expression wiederum ist wie folgt definiert:

expression:
assignment-expression
expression   ,   assignment-expression

Die Tabelle sollte also überarbeitet werden. (Ja, die in meinem Tutorial auch. ;-)) --RokerHRO 22:40, 21. Aug. 2007 (CEST)[Beantworten]