Typ des Zeigers
Der Typ des dies Zeigers kann in der Funktionsdeklaration von der const und volatile Schlüsselwörter geändert werden.Um eine Funktion hinzu, die als Attribute aus einem oder mehreren dieser Schlüsselwörter seien ihre zu deklarieren, fügen Sie die Schlüsselwörter in der Liste Funktionsargument.
Betrachten Sie das folgende Beispiel:
// type_of_this_pointer1.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
Der vorhergehende Code deklariert eine Memberfunktion, X, in denen der dies Zeiger als const Zeiger auf ein const-Objekt behandelt wird.Kombinationen von Lebenslauf-MOD Liste Optionen können diese jedoch immer das Objekt ändern, auf die von dies, nicht der dies Zeiger selbst dargestellt wird.Daher deklariert die folgende Deklaration Funktion X. dies der Zeiger ist ein const Zeiger auf ein const-Objekt:
// type_of_this_pointer2.cpp
class Point
{
unsigned X() const;
};
int main()
{
}
Der Typ der dies in einer Memberfunktion wurde durch die folgende Syntax beschrieben, in der Lebenslauf-Qualifizierer Liste aus deklarator Memberfunktion oder const und ermittelt wird veränderlichen (oder beide) sein kann und Klassentyp ist der Name der Klasse:
[Lebenslauf-Qualifizierer Liste const **dies***Klassentyp]
Das heißt, dies immer ein const Zeiger. Er kann nicht erneut zugewiesen werden.Die const oder volatile Qualifizierer, die in der Deklaration der Memberfunktion verwendet werden, gelten für die Klasseninstanz zu, die durch dies im Kontext dieser Funktion dargestellt wird.
In der folgenden Tabelle werden diese Informationen zum Modifizierer funktionieren.
Semantik dieser Modifizierer
Modifizierer |
Bedeutung |
---|---|
const |
Auf Memberdaten nicht ändern. darf keine Memberfunktionen aufrufen, die nicht constsind. |
volatile |
Memberdaten wird vom Arbeitsspeicher geladen, wenn sie zugegriffen wird. deaktiviert bestimmte Optimierungen. |
Es ist ein Fehler const , um ein Objekt zu einer Memberfunktion zu übergeben, die nicht constist.Entsprechend handelt es sich dabei um einen Fehler, um einen volatile-Objekts zu einer Memberfunktion zu übergeben, die nicht volatileist.
Die Memberfunktionen, die als const-Memberdaten deklariert sind, können nicht geändert — Funktionen in der dies Zeiger auf einen Zeiger auf ein const-Objekt.
Hinweis |
---|
Konstruktoren und Destruktoren können nicht als const oder volatiledeklariert werden.Sie können jedoch auf const oder volatile-Objekten aufgerufen werden. |