C 不使用virtual實現多型

2022-03-14 23:29:18 字數 737 閱讀 1999

不使用virtual實現多型可以用成員函式指標完成。

成員函式指標形式:返回型別(a::*指標名)(形參表)

其中a是類型別,即這個指標是指向a類的成員函式的函式指標

例如:int(a::*p)(int,int)這是乙個指向 「a類的帶有兩個int型形參且返回值是int的成員函式」 的指標,指標名是p。

下面是**:

#includeusing

namespace

std;

class

base;

typedef

int(base::*p)();//

定義成員函式指標型別

class

base

~base(){}

int test()//

判斷virtual_p的指向,如果指向派生類test就返回派生類的test呼叫

else

return (this->*virtual_p)();//

返回派生類test呼叫,對virtual_p解引用後是test函式}};

class derived :public

base

~derived(){}

inttest()

};int

main()

下面是執行結果:

C 多型 virtual 函式 指標陣列

忽略其他函式 class shape class rectangle public shape class rectangle public shape class rectangle public shape 如果定義 rectangle rect 3 4 shape s 並執行 s area 通...

使用C實現多型

什麼是多型?簡單地說就是主函式訪問繼承類derive的成員函式時,如果derive類存在此函式,就直接呼叫它 而如果derive類沒有,但是base類有此函式,則間接呼叫父類的那個函式。簡單的說,就是一句話 允許將子類型別的指標賦值給父類型別的指標 c也可以實現多型。不過這種多型和c 中的多型有所不...

不使用virtual關鍵字 模擬虛函式來表現多型性

不使用virtual關鍵字 模擬虛函式來表現出多型性 寫一基類person 有sayhello,saygoodbye函式 有一子類student 它也有自己的sayhello,saygoodbye函式 請在這兩個類裡加入函式 vsayhello,vsaygoodbye函式 來表現出物件的多型性 分別...