객체 포인터
-> 객체 포인터 변수에 본인 또는 본인을 상속 받는 객체의 주소를 저장할 수 있다.
-> 반대의 경우는 불가능하다.
class CObj
{
public:
void CObj_Func()
{
}
};
class CPlayer : public CObj
{
public:
void CPlayer_Func()
{
}
};
CPlayer* pObj1 = new CObj; // 불가능
단, 객체의 멤버에 접근할 때는 객체 타입 기본으로 판단한다.
객체 타입
CObj* pObj = new CObj;
CObj* pPlayer = new CPlayer;
pPlayer의 실 객체는 CPlayer 이지만
객체 타입이 CObj이기 때문에 CObj가 가지고 있는 함수만 호출이 가능하다.
pPlayer->CObj_Func();
pPlayer->CPlayer_Func(); // 불가능
하지만 객체 타입이 CPlayer 이면 자식 클래스이기 때문에 부모 클래스에 있는 함수까지 호출이 가능하다.
CPlayer player;
player.CObj_Func();
player.CPlayer_Func();
객체 타입을 자식클래스로 하면 부모 클래스로 동적 할당이 불가능하다.
자식 -> 부모는 참조가 가능하지만 부모 -> 자식은 불가능.
하지만 부모 클래스가 자식 클래스를 참조하는 방법이 있다.
가상 함수를 이용하는 것이다.(virtual)
'Programming > C++ Basic' 카테고리의 다른 글
C++ 가상 함수(virtual), 가상 소멸자, 순수 가상 함수 (0) | 2020.09.18 |
---|---|
C++ 오버라이딩 (0) | 2020.09.18 |
C++ 상속성 (0) | 2020.09.17 |
C++ friend (0) | 2020.09.17 |
C++ this 포인터, extern 키워드 (0) | 2020.09.16 |