Menu
Coddy logo textTech

Der 'this'-Pointer

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.

challenge icon

Aufgabe

Mittel

Implementieren 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 Sie this->, um auf Elemente zuzugreifen, geben Sie "<name> - Score: <score>, Level: <level>" zurück

Spickzettel

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 überschattet der Parameter den Member:

void Player::setName(std::string name) {
    name = name;  // Weist den Parameter sich selbst zu! Member unverändert.
}

Verwendung von this-> zur korrekten Zuweisung von Werten:

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-Zeiger zeigt immer auf die aktuelle Objektinstanz. Im Gegensatz zu Java und C#, wo this eine Referenz ist, ist es in C++ ein Zeiger, daher verwenden Sie -> anstelle von ., um auf Member zuzugreifen.

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;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung