国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

實現C++虛函數時相關注意事宜

開發 后端
C++虛函數是C++語言程序的主要組成部分,一個函數可以調用其他函數。在設計良好的程序中,每個函數都有特定的目的。

C++中的C++虛函數的作用主要是實現了多態的機制,虛函數(Virtual Function)是通過一張虛函數表(Virtual Table)來實現的,簡稱為V-Table,供大家學習參考!

如果一個類不包含虛函數,這經常預示不打算將它作為基類使用。當一個類不打算作為基類時,將析構函數聲明為虛擬通常是個壞主意。考慮一個表現二維空間中的點的類:

  1. class Point { // a 2D point  
  2.  public:  
  3.   Point(int xCoord, int yCoord);  
  4.   ~Point();  
  5.  private:  
  6.   int x, y;  
  7. };  

如果一個 int 占 32 位,一個 Point 對象正好適用于 64 位的寄存器。而且,這樣一個 Point 對象可以被作為一個 64 位的量傳遞給其它語言寫的函數,比如 C 或者 FORTRAN。如果 Point 的析構函數是虛擬的,情況就完全不一樣了。

C++虛函數的實現要求對象攜帶額外的信息,這些信息用于在運行時確定該對象應該調用哪一個虛函數。典型情況下,這一信息具有一種被稱為 vptr(virtual table pointer,虛函數表指針)的指針的形式。

vptr 指向一個被稱為 vtbl(virtual table,虛函數表)的函數指針數組,每一個包含C++虛函數的類都關聯到 vtbl。當一個對象調用了虛函數,實際的被調用函數通過下面的步驟確定:找到對象的 vptr 指向的 vtbl,然后在 vtbl 中尋找合適的函數指針。

虛函數如何被實現的細節是不重要的。重要的是如果 Point 類包含一個虛函數,這個類型的對象的大小就會增加。在一個 32 位架構中,它們將從 64 位(相當于兩個 int)長到 96 位(兩個 int 加上 vptr);

在一個 64 位架構中,他們可能從 64 位長到 128 位,因為在這樣的架構中指針的大小是 64 位的。為 Point 加上 vptr 將會使它的大小增長 50-100%!Point 對象不再適合 64 位寄存器。而且,Point 對象在 C++ 和其他語言(比如 C)中。

看起來不再具有相同的結構,因為其它語言缺乏 vptr 的對應物。結果,Points 不再可能傳入其它語言寫成的函數或從其中傳出,除非你為 vptr 做出明確的對應,而這是它自己的實現細節并因此失去可移植性。

這里的基準就是不加選擇地將所有析構函數聲明為虛擬,和從不把它們聲明為虛擬一樣是錯誤的。實際上,很多人總結過這條規則:當且僅當類中至少包含一個虛擬函數時,則聲明一個虛析構函數。

但是,當完全沒有C++虛函數時,就可能和非虛析構函數問題發生撕咬。例如,標準 string 類型不包含C++虛函數,但是被誤導的程序員有時將它當作基類使用:

  1. SpecialString *pss = new SpecialString("Impending Doom");  
  2.  
  3. std::string *ps;  
  4. ...  
  5. ps = pss; // SpecialString* => std::string*  
  6. ...  
  7. delete ps; // undefined! In practice,  
  8. // *ps’s SpecialString resources  
  9. // will be leaked, because the  
  10. // SpecialString destructor won’t  
  11. // be called.  

一眼看上去,這可能無傷大雅,但是,如果在程序的某個地方因為某種原因,你將一個指向 SpecialString 的指針轉型為一個指向 string 的指針,然后你將 delete 施加于這個 string 指針,你就立刻被送入未定義行為的領地。

【編輯推薦】

  1. C與C++中標準輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制
責任編輯:chenqingxiang 來源: 人民郵電出版社
相關推薦

2010-01-28 11:24:14

C++函數

2010-02-01 17:01:16

初學Python

2010-01-22 14:12:40

C++

2010-02-01 13:41:43

2010-01-28 16:42:29

C++靜態成員

2009-12-21 17:39:02

ADO.NET操作

2010-01-18 17:38:54

C++虛函數表

2024-12-17 12:00:00

C++對象模型

2022-07-18 15:32:37

C++虛函數表

2010-02-01 11:22:09

C++虛函數

2009-12-29 13:40:24

使用ADO.NET

2009-12-25 15:47:20

ADO存儲過程

2011-05-24 16:20:27

虛函數

2010-02-04 11:23:14

Android操作系統

2010-01-20 18:06:06

C++虛基類

2024-01-23 10:13:57

C++虛函數

2010-01-13 10:37:55

C++開發

2010-01-14 18:19:40

C++語言

2010-01-25 18:12:28

C++

2024-04-22 13:22:00

虛函數象編程C++
點贊
收藏

51CTO技術棧公眾號

99re成人精品视频| 久久久久久久久久久久久女国产乱 | 国产一区在线不卡| 午夜精品久久久久久久男人的天堂| 日韩欧美国产精品一区二区三区| 先锋影音久久久| 国产精品激情av在线播放| 国产资源一区| 91麻豆精品国产| 在线国产一级| 亚洲欧美影音先锋| 国产一区二区在线视频播放| 亚洲一区久久| 91亚洲精华国产精华| 亚州综合一区| 欧美男插女视频| 成人免费影院| 日韩精品专区在线影院重磅| 成黄免费在线| 日本久久精品电影| 亚洲男人天堂| 高潮白浆女日韩av免费看| 嫩模私拍啪啪| 亚洲老司机在线| 九七影院97影院理论片免费| 日本一区二区视频在线观看| 霍思燕三级露全乳照| 国产成人免费视频精品含羞草妖精| 日本一区二区精品| 久久国产直播| 免费毛片一区二区三区久久久| 欧美在线亚洲| 91人成网站www| 91久久夜色精品国产按摩| 国产91色在线|| 国产欧美日韩在线观看视频| 91精品国产99| eeuss国产一区二区三区四区| 久久91精品国产| 欧美经典影片视频网站| 中文字幕在线精品| 亚洲精品成人图区| 欧美精品在线观看播放| 欧洲美女和动交zoz0z| 国产国产一区| 欧美一级视频一区二区| 国产极品久久久久久久久波多结野| 日韩午夜精品| 成人蜜桃视频| 国产精品99一区二区| 精品视频一区二区三区四区| 国产精品入口| 亚洲一卡二卡三卡| 成人在线综合网| 青青在线视频免费| 亚洲一区二区三区四区在线| 欧美美乳在线| 欧美不卡一区二区三区四区| 人人鲁人人莫人人爱精品| 久久中文字幕视频| 国产一区二区三区四区大秀| 欧美日一区二区三区| 日韩一区二区在线观看| av白虎一区| 久久久久久亚洲精品不卡| 在线观看麻豆视频| 一区二区三区欧美在线观看| 国产精品wwwwww| 欧美大片aaaa| www日韩av| 日本一不卡视频| 国产爆乳无码一区二区麻豆| 国产亚洲综合av| 九九久久国产精品| 中文字幕亚洲区| 在线观看免费网站| 国产精品久久久久久模特| 亚洲视频在线二区| 丁香网亚洲国际| 电影天堂久久| 欧美日韩一区久久| 超黄网站在线观看| 亚洲91精品| 色综合中文字幕| xxx性欧美| 欧美精品在线免费| 伊人久久大香线| 国产精品一二三在线观看| 国产精品视频一二三| 夜色福利资源站www国产在线视频| 欧美少妇bbb| 国产成人午夜性a一级毛片| 日韩免费黄色av| 久久国内精品视频| www 四虎| 日韩成人久久久| 91久久夜色精品国产按摩| 久久久久久久久影视| 亚洲国产欧美在线| 亚洲精品成人图区| 99高清视频有精品视频| 久久久久久久综合日本| 国产淫片在线观看| 4438全国成人免费| 国产一区二区在线影院| 亚洲有码转帖| 久久国产精品免费视频| 99亚洲一区二区| 秋霞无码一区二区| 免费中文日韩| 免费高清视频精品| 韩国一区二区电影| 久久天堂成人| 99re精彩视频| 精品一区精品二区| 亚洲精品网址| 久久精品香蕉视频| 日韩免费一区二区三区在线播放| 日韩av字幕| 免费拍拍拍网站| 欧美一区二区三区在线视频| 精品高清久久| 亚洲成熟丰满熟妇高潮xxxxx| 欧美精品一区二区三区蜜臀| 欧美在线亚洲综合一区| 男女羞羞电影免费观看| 主播福利视频一区| 男人的天堂亚洲一区| 国产三级电影在线观看| 国产精品免费一区豆花| 欧美激情资源网| 另类一区二区| 神马午夜伦理影院| 精品国产1区二区| 日韩视频精品在线观看| 亚洲成人av高清| 国产精品v片在线观看不卡| 国产日韩v精品一区二区| 久久xxx视频| 在线免费一区| 日韩视频在线永久播放| 好看不卡的中文字幕| 三区在线观看| 国产日韩欧美视频| 亚洲成av人片观看| 成人三级视频| 午夜丝袜av电影| 国产精品1234| 国产91在线亚洲| 国产精品日韩| 欧美日本乱大交xxxxx| 欧美一区 二区| 国产精品人妖ts系列视频| 少妇免费毛片久久久久久久久 | 岛国在线视频| 久久综合伊人77777| 岛国一区二区三区| 无码国模国产在线观看| 亚洲综合欧美在线| 91免费版看片| 色午夜这里只有精品| 日本一区二区成人| 红桃视频国产精品| 亚洲美女电影在线| 真实国产乱子伦对白视频| 日韩中文字幕网站| 久久中文字幕电影| 日韩精品三区四区| 国产麻豆一区二区三区| 日韩视频在线观看国产| 欧美大片va欧美在线播放| 国产一区二区精品丝袜| 亚洲欧洲韩国日本视频| 国产在线精品一区二区夜色 | 亚洲精品大尺度| www.欧美亚洲| 国产在线不卡一区| 91国产一区| 亚洲免费av一区二区| 国产在线播放一区二区| 高清一区二区三区日本久| www日韩欧美| 成人免费在线视频| 一区二区三区四区五区在线| 澳门av一区二区三区| 日本人成精品视频在线| 精品国产一二三区| 182午夜在线观看| 男人插女人视频在线观看| 自拍日韩亚洲一区在线| 日本黄色三级大片| 黄色片视频在线播放| 人体内射精一区二区三区| 国产一区二区免费电影| 在线码字幕一区| 国产精品va在线观看无码| 欧美久久在线观看| 天堂精品一区二区三区| 亚洲午夜在线观看| 波多野结衣 作品|