Diskussion:C++-Programmierung: Liste der Operatoren nach Priorität
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)
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)