Heim >Backend-Entwicklung >C++ >Was ist der Typ des „this'-Zeigers in konstanten und nicht konstanten C-Methoden?
Typ des „this“-Zeigers
In C verweist der „this“-Zeiger innerhalb einer Klassenmethode auf die aktuelle Objektinstanz. Sein Typ hängt davon ab, ob die Methode als const deklariert ist oder nicht.
Innerhalb nicht konstanter Methoden:
In nicht konstanten Methoden ist „this“ vom Typ ClassName* this. Dies ermöglicht eine direkte Änderung der Mitgliedsvariablen des Objekts.
Innerhalb von Konstantenmethoden:
In const-Methoden ist „this“ vom Typ const ClassName* this. Dies liegt daran, dass const-Methoden den Status des Objekts nicht ändern können.
Compiler-Macken und implementierte Einschränkungen:
Einige Compiler, wie z. B. ältere Versionen von MSVC, implementieren möglicherweise „ this' als konstanten Zeiger, unabhängig davon, ob die Methode const ist oder nicht. Dies ist jedoch ein nicht standardmäßiges Verhalten, das nicht der C-Sprachspezifikation entspricht.
Erkennung von R-Wert-Referenzen:
Mit der Einführung von R-Wert-Referenzen in C 11 wurde es möglich, dieses nicht standardmäßige Verhalten zu erkennen. Code, der darauf angewiesen ist, kann in standardkonformen Compilern nicht kompiliert werden.
MSVC-Implementierung:
Ab Visual Studio 2017 verwendet MSVC immer noch die nicht standardmäßige Implementierung von 'this' als konstantem Zeiger. Dies kann zu Problemen mit Code führen, der R-Wert-Referenzen verwendet.
Das obige ist der detaillierte Inhalt vonWas ist der Typ des „this'-Zeigers in konstanten und nicht konstanten C-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!