• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

3:15 Line 39 player.Move();에 mage가 전달 안된 이유

21.04.14 22:05 작성 조회수 153

0

EnterGame(mage)로 분명 전달했는데

player.Move();가 Mage 클래스의 Move()가 아닌 Player 클래스의 Move()가 작동하는 이유가 궁금해요.

mage를 분명 전달했는데 player가 mage로 받아들이지 못하는 이유..

혹시 자식->부모클래스로 형변환은 강제형변환을 해줘야 하는 것 때문에 mage를 받지 못하고 player 그대로를 인식해서 player의 move()가 호출된건가요?

그리고 override를 사용하면 런타임에 타입을 자동으로 체크해준다 하셨는데 그게 자동 형변환이 되는거라고 보면 되나요?

답변 1

답변을 작성해보세요.

0

네 맞습니다.
EnterGame(Player player); 는 인자로 Player를 받아주기 때문에
설령 mage를 전달했더라도 그 객체를 player로 인식하는 것입니다.
실제로 Mage도 Player이기도 하니 틀린 말은 아니죠.
가상 함수를 사용하면 실제 원본 클래스가 무엇으로 만들어졌는지에 따라
override 된 함수를 호출해줍니다.