Menu
Coddy logo textTech

El puntero 'this'

Parte de la sección Programación Orientada a Objetos del Journey de C++ de Coddy — lección 7 de 104.

En C++, this es un puntero al objeto actual. Utilice this-> para acceder a los miembros, especialmente cuando los nombres de los parámetros coinciden con los nombres de los miembros.

Sin this, el parámetro oculta al miembro

void Player::setName(std::string name) {
    name = name;  // ¡Asigna el parámetro a sí mismo! El miembro no cambia.
}

Uso de this-> para asignar valores correctamente

void Player::setName(std::string name) {
    this->name = name;  // Asigna el parámetro al miembro
}

Uso de this-> en métodos

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

El puntero this siempre apunta a la instancia del objeto actual. A diferencia de Java y C#, donde this es una referencia, en C++ es un puntero, por lo que se utiliza -> en lugar de . para acceder a los miembros.

challenge icon

Desafío

Intermedio

Implementa los métodos de la clase Player usando this-> para distinguir entre miembros y parámetros con el mismo nombre:

  • Métodos setter: usa this-> para asignar parámetros a los miembros
  • getStatus(): usa this-> para acceder a los miembros, devuelve "<name> - Score: <score>, Level: <level>"

Hoja de referencia

En C++, this es un puntero al objeto actual. Usa this-> para acceder a los miembros, especialmente cuando los nombres de los parámetros coinciden con los nombres de los miembros.

Sin this, el parámetro oculta al miembro:

void Player::setName(std::string name) {
    name = name;  // ¡Asigna el parámetro a sí mismo! El miembro no cambia.
}

Usando this-> para asignar valores correctamente:

void Player::setName(std::string name) {
    this->name = name;  // Asigna el parámetro al miembro
}

Usando this-> en métodos:

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

El puntero this siempre apunta a la instancia del objeto actual. A diferencia de Java y C#, donde this es una referencia, en C++ es un puntero, por lo que se usa -> en lugar de . para acceder a los miembros.

Pruébalo tú mismo

#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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos