Programming/C C++
클래스 객체를 기반 클래스로 변환하는것을 업캐스팅, 파생클래스형으로 변환하는 것을 다운캐스팅이라고 합니다.

Base 클래스를 기반클래스, Deri 클래스를 기반클래스라고 가정했을 경우
Base* b = new Deri();
또는
Deri* d = new Deri();
Base* b = dynamic_cast<Base*>(d);
위와 같이 하는것이 방법이 업캐스팅이 됩니다. dynamic_cast는 캐스팅 함수로서 dynamic_cast<변환형>(대상객체); 형식으로 작성됩니다.

다운캐스팅은 dynamic_cast함수를 사용해야 합니다.
Base* b = new Base();
Deri* d = dynamic_cast<Deri*>(b);
캐스팅을 하기전에 dynamic_cast는 변환이 가능한지에 대한 확인작업을 먼저 하게 되는데 이를 생략하고 곧장 캐스팅을 수행하는 static_cast함수도 있습니다. 물론 static_cast 함수 사용에 대한 책임은 개발자에게 있을 것입니다.
Deri* d = static_cast<Deri*>(b);

'Programming > C C++' 카테고리의 다른 글

[Visual C++] 추상클래스  (0) 2012.10.19
[Visual C++] 클래스 템플릿  (0) 2012.10.18
[Visual C++] 업/다운 캐스팅  (0) 2012.10.17
[Visual C++] 프렌드 클래스  (0) 2012.10.16
[Visual C++] 배열  (3) 2012.10.10
[Visual C++] 복사생성자  (0) 2012.10.09
0 0