国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++學習一虛函數的實現方式

2019-11-11 01:07:38
字體:
來源:轉載
供稿:網友

在基類的成員函數中如果有使用virtual關鍵字修飾的函數,實例化時就會產生一張對應這個類的對象的虛函數表,而這個函數本來應該是函數入口的,而現在變成了虛函數表的入口地址。然后通過虛函數表內找到函數的地址。

比如有這樣兩個類

class Base {public:	virtual int fun() {		return 0;	}};class BaseSon:public Base {};其中:

Base這個基類的fun函數是虛函數,實例化后,在這里存在的函數指針地址會被存到這個對象對應的一個虛函數表中,而這里的地址被換成了虛函數表地址。

Baseson繼承的Base的fun函數,但是也是存在一個虛函數表(這張表和上面那張不是同一張),同樣里面有Base的fun函數的函數地址(入口地址)。而且重點是,這個地址在這兩張表中的相對位置相同,也就是偏移量相同。

class Base {public:	virtual int fun() {		return 0;	}};class BaseSon:public Base {public:	virtual int fun(){		return 1;	}};在這種情況中,這里Base類和上面一致。但是BaseSon類的虛函數表內的那個地址被換成了BaseSon自己的那個return1的fun函數的入口地址。

所以,可以通過使用基類的指針來訪問派生類的fun函數,這樣就可以實現動態多態,同一個命令對不同對象使用時,實現不同的功能。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 定西市| 新和县| 会宁县| 鸡泽县| 县级市| 霸州市| 赤城县| 九江市| 马尔康县| 昌图县| 芦溪县| 绥滨县| 灵石县| 塔河县| 桃源县| 新津县| 永昌县| 临朐县| 凉城县| 灵山县| 砀山县| 阿克苏市| 巴彦县| 宜城市| 宽甸| 望城县| 古蔺县| 开远市| 葵青区| 简阳市| 凯里市| 武隆县| 长宁县| 平果县| 观塘区| 株洲市| 孟津县| 昭平县| 察隅县| 蒲城县| 黄冈市|