C++ Casting
조경민 오전 1:54 2001-05-03
=-=======================================

dynamic, static은 클래스 hirachy cast에 쓰이는데
dynamic_cast는 변환 불가하면 zero로 세팅하고
static_cast는 변환불가시 assert 에러가 떨어진다.

CSon* lpSon = (CSon*)lpBase;
=>
CSon* lpSon = dynamic_cast<CSon*>(lpBase);
if( lpSon != NULL )
   lpSon->fnSon();
*downcast시 알맞지 않으면 lpSon == NULL이 된다.
*ambiguass 한 캐스트시 에러가난다.
*cross cast에 쓰일수 있다.

[A]  [A]
|      |
[B] [C] [D]
+---+---+
     |
    [E]

void f(D* pd)
{
  E* pe = dynamic_cast<E*>(pd);
  B* pb = pe;                   // upcast , implicit conversion
  A* pa = pb;                   //              "
}

void f(D* pd)
{
  B* pb = dynamic_cast<B*>(pd); // cross cast
  A* pa = pb;                   // upcast implicit 가능
}

---------------------------------------------------------

CBase* lpBase = (CBase*)lpSon;
=>
CBase* lpBase = static_cast<CBase*>(lpSon);
// 만일 lpBase가 실제 base가 아니면 컴파일타임에러가남





이외의 것
reinterpreted_cast<>를 쓴다.

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

[펌] C++ Reverse Disassembly  (0) 2004.09.10
[stl] 소트 하기  (0) 2004.03.19
[stl] STL List를 사용하기  (0) 2004.03.19
[stl] 이중배열 만들기 vector  (0) 2004.03.19
STL String  (0) 2004.03.19

+ Recent posts