Menu
Coddy logo textTech

'this' 포인터

Coddy C++ 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 104개 중 7번째.

C++에서 this는 현재 객체를 가리키는 포인터입니다. 특히 매개변수 이름이 멤버 이름과 일치할 때, 멤버에 접근하기 위해 this->를 사용합니다.

this가 없으면, 매개변수가 멤버 변수를 가리게 됩니다.

void Player::setName(std::string name) {
    name = name;  // 매개변수를 자기 자신에게 할당합니다! 멤버 변수는 변경되지 않습니다.
}

this->를 사용하여 값을 올바르게 할당하기

void Player::setName(std::string name) {
    this->name = name;  // 매개변수를 멤버에 할당합니다
}

메서드에서 this-> 사용하기

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

this 포인터는 항상 현재 객체 인스턴스를 가리킵니다. this가 참조인 Java 및 C#과 달리, C++에서는 포인터이므로 멤버에 접근할 때 . 대신 ->를 사용합니다.

challenge icon

챌린지

중급

동일한 이름을 가진 멤버와 매개변수를 구분하기 위해 this->를 사용하여 Player 클래스 메서드를 구현하세요:

  • Setter 메서드: this->를 사용하여 매개변수를 멤버에 할당하세요
  • getStatus(): this->를 사용하여 멤버에 접근하고, "<name> - Score: <score>, Level: <level>"를 반환하세요

치트 시트

C++에서 this는 현재 객체를 가리키는 포인터입니다. 특히 매개변수 이름이 멤버 이름과 일치할 때 멤버에 접근하기 위해 this->를 사용합니다.

this가 없으면 매개변수가 멤버를 가리게 됩니다(shadowing):

void Player::setName(std::string name) {
    name = name;  // 매개변수를 자기 자신에게 할당합니다! 멤버는 변경되지 않습니다.
}

this->를 사용하여 올바르게 값을 할당하는 방법:

void Player::setName(std::string name) {
    this->name = name;  // 매개변수를 멤버에 할당합니다.
}

메서드에서 this-> 사용하기:

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

this 포인터는 항상 현재 객체 인스턴스를 가리킵니다. this가 참조(reference)인 Java나 C#과 달리, C++에서는 포인터이므로 멤버에 접근할 때 . 대신 ->를 사용합니다.

직접 해보기

#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 icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨