인프런 커뮤니티 질문&답변

정준혁님의 프로필 이미지
정준혁

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

캐스팅 4총사

객체 관련 질문

작성

·

213

0

"캐스팅 4총사"의 6:49

 

Player* p = new Knight(); 부분에서는 들고 있는 건 Player지만 원본은 Knight라는 게 무슨 말인지 모르겠습니다..

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

image말 그대로 변수는 player 타입이지만, 실제 만들어준 원본 객체는 Knight라는 겁니다.

정준혁님의 프로필 이미지
정준혁
질문자

그러면 player타입 변수지만 Knight라는 원본 객체를 의미하기 때문에 class를 Knight로 선언해 담고 있는 정보들을 사용할 수 있는 건가요?

Rookiss님의 프로필 이미지
Rookiss
지식공유자

그건 아닙니다. Player타입의 변수기 때문에 딱 빨간색 영역에만 접근 가능하고,
노란 부분까지 접근하고 싶으면 캐스팅(Knight*)을 해줘야 합니다.

정준혁님의 프로필 이미지
정준혁
질문자

그러면 Player* p = new Knight();는 Knight가 Player을 상속 받고, Knight라는 원본 객체를 담고 있는 Player타입이라는 의미인데, Knight라는 원본 객체를 선언한 이유가 있을까요?? 어차피 Player가 담고 있는 부분만 접근할 수 있으니까요..

Rookiss님의 프로필 이미지
Rookiss
지식공유자

캐스팅(Knight*)하면 Knight 부분도 접근이 가능합니다.
이렇게 하는 이유는 각종 타입을 Player로 모아서 관리하기 위함입니다.
(Knight, Archer, Mage ...)
강의 어딘가에서 이 내용은 설명을 했을텐데 어느 부분인지 기억이 가물가물하네요.
중요한 내용이니 한참 더 고민해보시기 바랍니다.

정준혁님의 프로필 이미지
정준혁

작성한 질문수

질문하기