class B { } class C : public B { } class D : public B { } D* pD = new D();//pD的靜態(tài)類型是它聲明的類型D*,動態(tài)類型也是D* B* pB = pD;//pB的靜態(tài)類型是它聲明的類型B*,動態(tài)類型是pB所指向的對象pD的類型D* C* pC = new C(); pB = pC;//pB的動態(tài)類型是可以更改的,現(xiàn)在它的動態(tài)類型是C*
class B { void DoSomething(); virtual void vfun(); } class C : public B { void DoSomething();//首先說明一下,這個子類重新定義了父類的no-virtual函數(shù),這是一個不好的設(shè)計(jì),會導(dǎo)致名稱遮掩;這里只是為了說明動態(tài)綁定和靜態(tài)綁定才這樣使用。 virtual void vfun(); } class D : public B { void DoSomething(); virtual void vfun(); } D* pD = new D(); B* pB = pD;