일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Dekker
- up-casting
- 다운캐스팅
- 피터슨 알고리즘
- 임계 영역
- 리눅스 setvbuf
- 업캐스팅
- c언어 setvbuf
- 대구소프트웨어고등학교
- AVR기초
- 임베디드 입문
- 리눅스 기초
- 임베디드 초급
- 데커 알고리즘
- 임베디드 개발자
- 워치독 타이머
- setvbuf
- 2019년 회고
- 임베디드
- 데커 알고리듬
- 코딩
- 외부인터럽트
- AVR
- 무래함의 비용
- peterson 알고리즘
- 아두이노
- 데커
- down-casting
- 임베디드시스템프로그래밍
- 임베디드 시스템 프로그래밍
- Today
- Total
인성 좋은 인성이
cpp 객체지향 - 업 캐스팅(up-casting), 다운 캐스팅(down-casting) 본문
업 캐스팅(up-casting)
- 업 캐스팅이란 파생 클래스 포인터가 기본 클래스 포인터에 치환되는 것이다.
ex) 사람을 인간이라는 개념이 아닌 상위 개념이라고 할 수 있는 동물로 보는 것이다.
int main() {
B b;
B *pDer = &b;
A* pBase = pDer; // 업 캐스팅
}

기본클래스의기본 클래스의 주소를 가지고 있을 pDer을 선언하여 기본 클래스의 주소를 대입한다.
A 타입의 포인터 pBase를 선언한 후 pDer을 대입(치환)한다. 따라서 pBase는 B의 상위 클래스인 A에 접근할 수 있다.
하위 클래스인 B의 포인터가 상위 클래스인 A의 포인터에 치환했다. 이를 아래 개념에서 위 개념을 치환한 것이니 업 캐스팅이라고 한다.
pDer -> 모든 public 멤버에 접근이 가능하다.
pBase -> 기본클래스의 public 멤버에만 접근이 가능하다.
다운 캐스팅(down-casting)
- 기본 클래스의 포인터가 파생 클래스의 포인터에 치환되는 것이다.
업 캐스팅을 반대로 생각하면 편하다.
int main() {
B b;
B *pDer;
A* pBase = &b; // 업 캐스팅...
pDer = (A*)pBase; // 다운 캐스팅... 반드시 강제 타입 변환이 필요하다...
...
}
다운 캐스팅은 정말로 업 캐스팅을 반대로 생각하면 된다. 업 캐스팅이 하위 클래스에서 상위 클래스를 치환했다면, 다운 캐스팅은 상위 클래스에서 하위 클래스로 치환하는 것이다.