C C 物件導向程式設計特性 多型(虛函式表原理)

2021-06-23 02:10:19 字數 901 閱讀 6003

#include #include using namespace std;

//定義兩個函式指標型別

typedef void(*pfunc)(void);

typedef int(*psum)(int,int);

//定義測試基類

class a

private:

//定義私有的虛函式sum(用於測試)

virtual int sum(int x,int b)

};//定義測試子類

class b :public a

//定義虛函式tool用於測試

virtual void tool()

};int main()

{ //使用子類構建指向子類的物件指標

a *a = new b;

//獲取虛函式表中的第乙個函式指標

pfunc func = (pfunc)*(int *)*(int *)a;

//輸出

func(); //子類中的func

//通過虛函式表訪問基類中的私有虛函式(也適用於:子類構造的物件通過虛函式表訪問基類的私有函式)

//獲取虛函式表中的第二個函式指標 //基類中的私有函式(sum函式)

psum sum = (psum)*((int *)*(int *)a+1);

int x = 10;int b = 2000;

//傳遞引數,並輸出, //注意能夠輸出測試字串,但是傳遞的引數被迫壞掉,無法正常運算

物件導向 多型(虛函式)

虛函式 用關鍵字virtual修飾的 類的成員函式 虛函式定義 語法形式 class x虛函式的意義 即虛函式的虛特徵 基類指標 或引用 指向 派生類的物件時,通過該指標 或引用 訪問派生類中的虛函式時,將呼叫該指標 或引用 實際所指物件的成員函式!指標和引用給基類的是派生類的位址 例子 class...

多型性與虛函式 物件導向程式設計

多型性 向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同 的行為。靜態多型性 由函式中在和運算子過載形成。動態多型性 通過虛函式實現。先建立乙個point類,包含資料成員x,y 座標點 以它為基類,派生出乙個circle 圓 類,增加資料成員r 半徑 再以circle類為直接基類,派生出乙個...

物件導向特性 多型

1 抽象類和方法 只在父類中宣告,在子類中實現,用abstract宣告。作用是給子類作規範。規則 抽象類不能例項化,只能被繼承 抽象方法必須被子類方法重寫。建立 abstract class computer 抽象類裡面的抽象方法必須在子類裡面重寫,不然會報錯。abstract class comp...