Primäre Ausdrücke
Primäre Ausdrücke sind die Bausteine von komplexeren Ausdrücken.Sie sind Literale, Namen und die Namen, die vom Bereichsauflösungsoperator (::) gekennzeichnet sein.Ein primärer Ausdruck kann eine der folgenden Formen vor:
literal
this
:: name
name
( expression )
Ein Literal ist ein konstanter Ausdruck primärer.Sein Typ hängt vom Formular ihrer Spezifikation ab.Weitere Informationen finden Sie unter Literale für vollständige Informationen zum Angeben von Literalen.
Das dies-Schlüsselwort ist ein Zeiger auf ein Klassenobjekt.Sie ist innerhalb der nicht statischen Memberfunktionen zur Verfügung und verweist auf die Instanz der Klasse, für die die Funktion aufgerufen wurde.Das dies-Schlüsselwort kann nicht außerhalb des Texts einer Klassenmember Funktion verwendet werden.
Der Typ des dies Zeigers ist type *const (wobei type der Klassenname ist), den dies Zeiger in Funktionen nicht ausdrücklich ändern.Im folgenden Beispiel wird Memberfunktion Deklarationen und Typen von diesan:
// expre_Primary_Expressions.cpp
// compile with: /LD
class Example
{
public:
void Func(); // * const this
void Func() const; // const * const this
void Func() volatile; // volatile * const this
};
Weitere Informationen finden Sie unter Typ des Zeigers Weitere Informationen über das Ändern des Typs des dies Zeigers.
Der Bereichsauflösungsoperator (::), gefolgt von einem Ausdruck einen primären legt den Namen fest.Solche Namen müssen Namen im globalen Gültigkeitsbereich befinden, nicht Membernamen.Der Typ dieses Ausdrucks wird durch die Deklaration des Titels bestimmt.Es ist ein l-Wert (d. h. es kann auf der linken Seite eines Ausdrucks für Zuweisungsoperator angezeigt), wenn der deklarierende Name ein l-Wert handelt.Der Bereichsauflösungsoperator kann einen globalen Namen verwiesen werden soll, auch wenn der Name im aktuellen Bereich ausgeblendet ist.Weitere Informationen finden Sie unter Bereich als ein Beispiel dafür, wie Sie den Bereichsauflösungsoperator verwendet.
Ein Ausdruck, der in Klammern eingeschlossen wird, ist ein primärer Ausdruck, dessen Typ und Wert auf dem unparenthesized Ausdrucks übereinstimmen.Es ist ein l-Wert, wenn der unparenthesized Ausdruck ein l-Wert handelt.
Im Rahmen des obigen der primären Mittel Ausdruckssyntax gesamte Name in der Syntax, die für Namenbeschrieben wird, obwohl, wenn Sie den Bereichsauflösungsoperator vor dem Namen verwendet, Typen von Namen, die in einer Klasse nur auftreten können, nicht zulässig sind.Dies schließt benutzerdefinierte Konvertierungsfunktions, und ein Destruktor.
Beispiele für primäre Ausdrücke sind möglich:
100 // literal
'c' // literal
this // in a member function, a pointer to the class instance
::func // a global function
::operator + // an global operator function
::A::B // a global qualified name
( i + 1 ) // a parenthesized expression
Alle nachfolgenden Beispiele sind betrachtete Namenund somit primäre Ausdrücke in verschiedenen Formen:
MyClass // a identifier
MyClass::f // a qualified name
operator = // an operator function name
operator char* // an converstion operator function name
~MyClass // a destructor name
A::B // a qualified name
A<int> // a template id