Menu
Coddy logo textTech

The 'this' Pointer

Part of the Object Oriented Programming section of Coddy's C++ journey — lesson 7 of 104.

In C++, this is a pointer to the current object. Use this-> to access members, especially when parameter names match member names.

Without this, the parameter shadows the member

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

Using this-> to correctly assign values

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

Using this-> in methods

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

The this pointer always points to the current object instance. Unlike Java and C# where this is a reference, in C++ it's a pointer, so you use -> instead of . to access members.

challenge icon

Challenge

Medium

Implement the Player class methods using this-> to distinguish between members and parameters with the same name:

  • Setter methods: use this-> to assign parameters to members
  • getStatus(): use this-> to access members, return "<name> - Score: <score>, Level: <level>"

Cheat sheet

In C++, this is a pointer to the current object. Use this-> to access members, especially when parameter names match member names.

Without this, the parameter shadows the member:

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

Using this-> to correctly assign values:

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

Using this-> in methods:

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

The this pointer always points to the current object instance. Unlike Java and C# where this is a reference, in C++ it's a pointer, so you use -> instead of . to access members.

Try it yourself

#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 iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

All lessons in Object Oriented Programming