動態型別轉換

使用 dynamic_cast<>() 作為函式,它可以幫助你通過繼承層次結構進行轉換。

如果你必須對某些派生類 BC 做一些非多型的工作,但是收到了基礎 class A,那麼這樣寫:

class A { public: virtual ~A(){} };

class B: public A
{ public: void work4B(){} };

class C: public A
{ public: void work4C(){} };

void non_polymorphic_work(A* ap)
{
  if (B* bp =dynamic_cast<B*>(ap))
    bp->work4B(); 
  if (C* cp =dynamic_cast<C*>(ap))
    cp->work4C(); 
}