以下用來學習基類指標指向子類物件時的情況
即base *pb = new derived();
分析其建立過程:
1.new乙個子類物件,為其生成乙個指向該種子類虛函式表vtable的指標vptr,指向derived::func();
2.建立乙個基類指標指向它,基類沒有的成員變數將無法通過該指標解引用後呼叫,但vptr還是那個vptr,vptr指向的虛函式表裡還是derived::func();
目前來看這種判斷方法還沒有出錯
#include
using
namespace std;
class
base
~base()
virtual
void
func()
};class
derived
:public base
~derived()
virtual
void
func()
/*int func(int a) */};
intmain()
繼承,基類指標指向子類物件
include include using namespace std class a a a class b public a b void update void print b b class c public a c void update void print c c class d pu...
c 父類指標指向子類物件
父類子類指標函式呼叫注意事項 1,如果以乙個基礎類指標指向乙個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以乙個衍生類指標指向乙個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾...
父類指標指向子類物件問題
子類與父類指標呼叫相關注意事項 1,如果以乙個基礎類指標指向乙個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以乙個衍生類指標指向乙個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困...