動態型別轉換
使用 dynamic_cast<>()
作為函式,它可以幫助你通過繼承層次結構進行轉換。
如果你必須對某些派生類 B
和 C
做一些非多型的工作,但是收到了基礎 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();
}