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

이준호 (경소담)님의 프로필 이미지
이준호 (경소담)

작성한 질문수

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

다형성 #2

이번 강의에서

작성

·

350

1

 궁금한게 이번 강의에서보면 자식 클래스(knight)의 메모리는

Knight k; 이면

(주소)VFTable

(주소)_hp

(주소)_stemia

이렇게 되있잖아요

그러면

Player * player  = &K;

는 *player는 VFTable인데

_hp에 접근 하려고 하면

*(player +4)로 접근 하는거 같더라구요(제가 어샘블리를 제대로 해석 한것인지는 모르겠습니다.)

사실 player는  knight의 시작주소를 가리키고 있는데

_stemia에 접근 못하는 이유는 player은 Player 포인터고

그렇기 때문에 컴파일러에서 Player의 맴버 변수 까지만 접근 가능하게 하는건가요?

답변 1

0

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

그렇습니다.
C++ 문법상 Player* 인 상황에서는,
(설령 원본이 Knight라 하더라도) Player 자체 정보만 접근 가능한 것입니다.

감사합니다. 어셈블리로 분석하니 훨씬 이해가 빠르게 되는거 같아요 ^^

이준호 (경소담)님의 프로필 이미지
이준호 (경소담)

작성한 질문수

질문하기