'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++에서는 포인터이므로 멤버에 접근할 때 . 대신 ->를 사용합니다.
챌린지
중급동일한 이름을 가진 멤버와 매개변수를 구분하기 위해 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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.