不使用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函式 來表現出物件的多型性 分別...