dynamic_카스트의 장점

1091 단어 null
본 예에서 사용한 코드는 《다중계승, 가상계승》을 보십시오.
아래 코드 분석
    {
        CTest oTest;
        CInterfaceA *pA = &oTest;
        pA->MethondA1();
        pA->MethondA2();
        CInterfaceB *pB = &oTest;
        pB->MethondA1();
        pB->MethondA2();
        pB->MethodB1();
        CInterfaceB *pB2 = (CInterfaceB *)(void*)pA;
        pB2->MethodB1(); // error
        CInterfaceB *pB3 = dynamic_cast<CInterfaceB*>(pA);
        pB3->MethodB1();
    }
    {
        CAImpl oAImpl;
        CInterfaceA *pA = &oAImpl;
        pA->MethondA1();
        pA->MethondA2();
        CInterfaceB *pB = (CInterfaceB *)(void*)pA;
        pB->MethodB1(); // error
        CInterfaceB *pB3 = dynamic_cast<CInterfaceB*>(pA);
        pB3->MethodB1(); // pB3 is NULL
    } 

 
강제 유형 변환으로void*와 임의의 종류의 바늘은 서로 변환할 수 있으며 옳든 그르든 상관없다.다이내믹cast, 입력 매개 변수는 정해진 형식이어야 합니다. 변환할 수 없으면 빈 바늘을 되돌려줍니다.

좋은 웹페이지 즐겨찾기