Der „this“-Zeiger
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy. Lektion 7 von 104.
In C++ ist this ein Zeiger auf das aktuelle Objekt. Verwenden Sie this->, um auf Member zuzugreifen, insbesondere wenn Parameternamen mit Membernamen übereinstimmen.
Ohne this überdeckt der Parameter das Member
void Player::setName(std::string name) {
name = name; // Weist den Parameter sich selbst zu! Member unverändert.
}Verwenden von this->, um Werte korrekt zuzuweisen
void Player::setName(std::string name) {
this->name = name; // Weist den Parameter dem Member zu
}Verwendung von this-> in Methoden
std::string Player::getStatus() {
return this->name + " - Score: " + std::to_string(this->score);
}Der this-Pointer zeigt immer auf die aktuelle Objektinstanz. Anders als in Java und C#, wo this eine Referenz ist, ist es in C++ ein Pointer, daher verwenden Sie -> anstelle von ., um auf Member zuzugreifen.
Aufgabe
MittelImplementieren Sie die Player-Klassenmethoden unter Verwendung von this->, um zwischen Elementen und Parametern mit demselben Namen zu unterscheiden:
- Setter-Methoden: verwenden Sie
this->, um Parameter den Elementen zuzuweisen getStatus(): verwenden Siethis->, um auf Elemente zuzugreifen, geben Sie"<name> - Score: <score>, Level: <level>"zurück
Probier es selbst
#include <iostream>
#include "Player.h"
int main() {
std::string name;
int score, level;
std::getline(std::cin, name);
std::cin >> score >> level;
Player player;
player.setName(name);
player.setScore(score);
player.setLevel(level);
std::cout << "Name: " << player.name << std::endl;
std::cout << "Score: " << player.score << std::endl;
std::cout << "Level: " << player.level << std::endl;
std::cout << player.getStatus() << std::endl;
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienC++ Build & KompilierungHeader-Dateien & QuelldateienNamespaces & GültigkeitsbereichEinführung in OOP mit C++Klassen vs. ObjekteDer „this“-ZeigerMethoden (Member-Funktionen)Attribute (Datenmember)Grundlagen zu Ctors & DtorsRückblick – Einfacher Taschenrechner4Klassenattribute
Instanz- vs. statische MemberGetter und SetterConst-MemberfunktionenMutable-SchlüsselwortStatische Methoden und VariablenFriend-Funktionen und -KlassenZusammenfassung – Bankkontoverwaltung7Vererbung
Grundlagen der VererbungZugriffsebenen bei der VererbungAufrufreihenfolge von Ctor & DtorÜberschreiben von MethodenVirtuelle Funktionen & VTableMehrfachvererbungVirtuelle VererbungRückblick – Mitarbeiterhierarchie2Speicherverwaltung
Stack- vs. Heap-SpeicherZeiger und ReferenzenDynamischer Speicher (new/delete)Intelligente Zeiger in C++RAII in C++Rückblick – Dynamischer Array-Manager5Kapselung
Zugriffsbezeichner in C++Zugriffsbezeichner im DetailInformationsverbergungStruct vs. KlasseVerschachtelte und innere KlassenWiederholung – Studierendenverwaltungssystem8Polymorphie
Polymorphie zur Compilezeit vs. LaufzeitFunktionsüberladungVirtuelle Funktionen erneut betrachtetRein virtuelle FunktionenAbstrakte KlassenInterface-Design in C++Dynamic Casting & RTTIRückblick – Shape-Calculator3Konstruktoren & Destruktoren
StandardkonstruktorParametrisierter KonstruktorKopierkonstruktorMove-KonstruktorKonstruktor-InitialisierungslistenDelegierende KonstruktorenDestruktor im DetailDrei-/Fünf-/Null-RegelZusammenfassung – String-Klasse6Operatorüberladung
Einführung in die OperatorüberladungArithmetische OperatorüberladungVergleichsoperatorüberladungStream-OperatorenZuweisungsoperatorüberladungÜberladung der Operatoren [] und ()TypkonvertierungsoperatorenWiederholung – Matrix-Klasse9Templates
FunktionstemplatesKlassen-TemplatesTemplate-SpezialisierungVariadische TemplatesGrundlagen zu SFINAE und Type TraitsRückblick – Generischer ContainerÜbe selbstständig: Online-C++-Compiler