Menu
Coddy logo textTech

O Ponteiro 'this'

Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy — lição 7 de 104.

Em C++, this é um ponteiro para o objeto atual. Use this-> para acessar membros, especialmente quando os nomes dos parâmetros coincidem com os nomes dos membros.

Sem o this, o parâmetro sombreia o membro

void Player::setName(std::string name) {
    name = name;  // Atribui o parâmetro a si mesmo! Membro inalterado.
}

Usando this-> para atribuir valores corretamente

void Player::setName(std::string name) {
    this->name = name;  // Atribui o parâmetro ao membro
}

Usando this-> em métodos

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

O ponteiro this sempre aponta para a instância do objeto atual. Ao contrário de Java e C#, onde this é uma referência, em C++ ele é um ponteiro, então você usa -> em vez de . para acessar membros.

challenge icon

Desafio

Médio

Implemente os métodos da classe Player usando this-> para distinguir entre membros e parâmetros com o mesmo nome:

  • Métodos setter: use this-> para atribuir parâmetros aos membros
  • getStatus(): use this-> para acessar os membros, retorne "<name> - Score: <score>, Level: <level>"

Folha de consulta

Em C++, this é um ponteiro para o objeto atual. Use this-> para acessar membros, especialmente quando os nomes dos parâmetros coincidem com os nomes dos membros.

Sem o this, o parâmetro sombreia o membro:

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

Usando this-> para atribuir valores corretamente:

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

Usando this-> em métodos:

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

O ponteiro this sempre aponta para a instância do objeto atual. Ao contrário de Java e C#, onde this é uma referência, em C++ ele é um ponteiro, então você usa -> em vez de . para acessar os membros.

Experimente você mesmo

#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 seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos