Primärausdrücke

Primäre Ausdrücke sind die Bausteine für komplexere Ausdrücke. Sie können Literale, Namen und Namen sein, die vom Bereichsauflösungsoperator (::) qualifiziert sind. Ein primärer Ausdruck kann jede der folgenden Formen haben:

primary-expression
literal
this
name
:: name ( expression )

A literal ist ein konstanter primärer Ausdruck. Sein Typ hängt von der Form seiner Spezifikation ab. Weitere Informationen zum Angeben von Literalen finden Sie unter "Literale" .

Die this Schlüsselwort (keyword) ist ein Zeiger auf eine Instanz der Klasse. Sie ist in nicht statischen Memberfunktionen verfügbar und verweist auf die Instanz der Klasse, von der die Funktion aufgerufen wurde. Die this Schlüsselwort (keyword) kann nicht außerhalb des Textkörpers einer Klassenelementfunktion verwendet werden.

Weitere Informationen zum Zeigertyp this finden Sie unter this Zeiger.

Der Bereichsauflösungsoperator (::) gefolgt von einem Namen ist ein primärer Ausdruck. Solche Namen müssen Namen von globaler Reichweite sein, nicht Membernamen. Die Deklaration des Namens bestimmt den Typ des Ausdrucks. Es handelt sich um einen l-Wert (d. h. auf der linken Seite eines Zuordnungsausdrucks), wenn der deklarierende Name ein l-Wert ist. Der Bereichsauflösungsoperator lässt zu, dass auf einen globalen Namen verwiesen wird, selbst wenn dieser Name im aktuellen Bereich ausgeblendet ist. Ein Beispiel für die Verwendung des Bereichsauflösungsoperators finden Sie unter Scope .

Ein in Klammern eingeschlossener Ausdruck ist ein primärer Ausdruck. Der Typ und wert sind identisch mit dem Typ und Wert des nicht analysierten Ausdrucks. Es handelt sich um einen l-Wert, wenn der nicht analysierte Ausdruck ein l-Wert ist.

Zu den Beispielen von primären Ausdrücken gehören:

100 // literal
'c' // literal
this // in a member function, a pointer to the class instance
::func // a global function
::operator + // a global operator function
::A::B // a global qualified name
( i + 1 ) // a parenthesized expression

Diese Beispiele gelten als Namen und als solche primäre Ausdrücke in verschiedenen Formen:

MyClass // an identifier
MyClass::f // a qualified name
operator = // an operator function name
operator char* // a conversion operator function name
~MyClass // a destructor name
A::B   // a qualified name
A<int> // a template id

Siehe auch

Ausdruckstypen