Menu
Coddy logo textTech

Le pointeur 'this'

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy — leçon 7 sur 104.

En C++, this est un pointeur vers l'objet actuel. Utilisez this-> pour accéder aux membres, en particulier lorsque les noms des paramètres correspondent aux noms des membres.

Sans this, le paramètre masque le membre

void Player::setName(std::string name) {
    name = name;  // Assigne le paramètre à lui-même ! Le membre reste inchangé.
}

Utilisation de this-> pour assigner correctement des valeurs

void Player::setName(std::string name) {
    this->name = name;  // Assigne le paramètre au membre
}

Utilisation de this-> dans les méthodes

std::string Player::getStatus() {
    return this->name + " - Score: " + std::to_string(this->score);
}

Le pointeur this pointe toujours vers l'instance d'objet actuelle. Contrairement à Java et C# où this est une référence, en C++ c'est un pointeur, vous utilisez donc -> au lieu de . pour accéder aux membres.

challenge icon

Défi

Moyen

Implémentez les méthodes de la classe Player en utilisant this-> pour distinguer les membres des paramètres ayant le même nom :

  • Méthodes setter : utilisez this-> pour assigner les paramètres aux membres
  • getStatus() : utilisez this-> pour accéder aux membres, retournez "<name> - Score: <score>, Level: <level>"

Aide-mémoire

En C++, this est un pointeur vers l'objet actuel. Utilisez this-> pour accéder aux membres, surtout lorsque les noms des paramètres correspondent aux noms des membres.

Sans this, le paramètre masque le membre :

void Player::setName(std::string name) {
    name = name;  // Assigns parameter to itself! Member unchanged.
}

Utilisation de this-> pour assigner correctement les valeurs :

void Player::setName(std::string name) {
    this->name = name;  // Assigns parameter to member
}

Utilisation de this-> dans les méthodes :

std::string Player::getStatus() {
    return this->name + " - Score: " + std::to_string(this->score);
}

Le pointeur this pointe toujours vers l'instance de l'objet actuel. Contrairement à Java et C# où this est une référence, en C++, c'est un pointeur, vous utilisez donc -> au lieu de . pour accéder aux membres.

Essayez vous-même

#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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet