업캐스팅
클래스 객체를 기반 클래스로 변환하는것.
부모형으로 자식 클래스의 메소드에 접근 가능한 경우
- 추상메소드를 자식클래스에서 정의한 경우
- 부모클래스에 정의된 메소드를 자식에서 오버라이딩한 경우
class Parent
{
public:
virtual void Print()
{
cout << "Parent 클래스" << endl;
}
};
class Child : public Parent
{
public:
virtual void Print() override
{
cout << "Child 클래스" << endl;
}
};
int main()
{
Parent* pParent = new Parent();
Child* pChild = new Child();
pParent->Print();
delete pParent;
pParent = pChild;
pParent->Print();
delete pChild;
}
다운캐스팅
클래스 객체를 파생클래스형으로 변환하는 것.
class Parent
{
public:
virtual void Print()
{
cout << "Parent 클래스" << endl;
}
};
class Child : public Parent
{
public:
virtual void Print() override
{
cout << "Child 클래스" << endl;
}
};
int main()
{
Parent* pParent = new Parent();
Child* pChild = new Child();
pChild->Print();
delete pChild;
pChild = static_cast<Child*>(pParent);
pChild->Print();
delete pParent;
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 순환 참조 (Circular Dependency) & 데드락 (0) | 2022.07.24 |
---|---|
C++ 4가지 타입의 캐스팅 (0) | 2022.07.22 |
C++ 명시적 형변환/캐스팅 (explicit) (0) | 2022.07.22 |
C++ 상수식 (constexpr) (0) | 2022.07.22 |
C++ 클래스 상속 불가 및 함수 오버라이딩 불가 (final) (0) | 2022.07.21 |