C++ 업캐스팅 다운캐스팅

Intro

업캐스팅과 다운캐스팅의 이해

업 캐스팅 (Up Casting)

업캐스팅이란 파생 클래스의 객체를 기본 클래스의 포인터로 가리키는 것을 말한다.

업 캐스팅은 파생 클래스의 객체를 기본 클래스의 객체 처럼 다룰 수 있게 한다.

예제

1

cBase는 Circle 클래스의 포인터이므로 cBase 포인터로는 Circle 클래스 멤버만 접근할 수 있다.

그러므로 getArea() 함수는 Circle 클래스의 멤버가 아니므로 오류가 발생한다.

업 캐스팅시엔 다음과 같이 명시적 타입 변환이 필요 없다.

Circle* cBase = (Circle*)cDer;

다운 캐스팅 (Down Casting)

기본 클래스 포인터가 가리키는 객체를 파생 클래스의 포인터로 가리키는 것을 다운 캐스팅 이라한다.

자식 형식에서 부모 형식을 사용하는것이며 업캐스팅에서 다시 원래의 형으로 되돌려주는 작업이다.

다운 캐스팅은 업 캐스팅과 달리 명시적 타입 변환을 지정해야 한다.

cDer = (Pizza*)cBase;

참고 자료

황기태, 명품 C++ Programming, 생능출판사,2013, 373쪽

댓글남기기