• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

객체 관련 질문

22.09.29 00:54 작성 조회수 145

0

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

 

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

답변 1

답변을 작성해보세요.

1

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

정준혁님의 프로필

정준혁

질문자

2022.09.29

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

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

정준혁님의 프로필

정준혁

질문자

2022.09.30

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

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