青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

數據加載中……

【轉】關于C++虛函數

如果你是C++程序員,我想你可能遇到過這樣的情況:

在debug時,對著一個函數step into,明明調用的是A函數,可是結果卻跳進了B函數。

為什么,call stack里顯示的也是明明白白,就是直接進了B函數。百思不得其解,于是你懷疑是不是系統出了問題,是不是編譯器出了問題,是不是調試器出了問題~~~

其實那些玩意不是那么容易出錯的,先看看你你的A,B函數是不是同一個類的虛函數,如果是,這極有可能是因為你修改過虛函數而沒有完全編譯引起的。

還沒明白?看看這個例子, 假設你在Project1中有一個名為KuQin.COM的類,該類有三個虛函數:

class KuQin.COM
{
public:
virtual void f1();
virtual void f2();
virtual void f3();
};

在Project2中你調用了其虛函數:

pDbgNow->f2();

之后由于某種需求你在這個類中加入了一個虛函數:

class KuQin.COM
{
public:
virtual void f1();
virtual void f1_5();
virtual void f2();
virtual void f3();
};

只編譯Project1,在Project2中調用到pDbgNow->f2()時,你就會發現本文一開始描述的情況:明明調用的是f2(),結果卻進了f1_5()。理由如下:

pDbgNow->f2()之前被編譯為調用類KuQin.COM的第二個虛函數,因為是虛函數,其真正調用類似于pDbgNow->vtable[1]。因為在加入函數f1_5()后,f1_5成為了該虛表中的第二個函數,但由于沒有重新編譯Project2,pDbgNow->f2()的調用沒有更新為正確的pDgbNow->vtable[2],所以真正調用的是函數f1_5(),與函數名無關。

可能你會認為這種"低級錯誤"根本不會發生在你身上,至少有兩個方法來解決這個問題:

  1. 永遠把虛函數加到最后
  2. 永遠編譯所有的工程

的確,這兩招在一定程度上是有效的,但讓我們仔細分析一下:

  1. 永遠把虛函數加到最后,針對上面這個例子是有用的??墒侨绻衅渌惻缮陬怟uQin.COM,即使你把虛函數加到了類KuQin.COM的最后,還是會打亂其派生類的虛表。
  2. 永遠編譯所有的工程,這的確是一個保險的方法。可是在一個大型系統中,編譯所有的代碼所耗費的時間是非常大的,加了一個虛函數,你可能得等上個好幾個小時才能看到最后的結果,這是我們不愿承受的。

那么,對于大型系統中一個正處于積極修改期的核心基類,一個比較好的操作方法是預先分配好足夠多的虛函數,這樣之后需要加虛函數是,只要修改一個原有的就行了,無需大規模的rebuild ,只需編譯一下用到了這個虛函數的代碼就可以了??梢哉f節省的時間是相當可觀的:

class KuQin.COM
{
public:
virtual void f1();
virtual void f2();
virtual void f3();
virtual void dummyvirtualfunction1();
virtual void dummyvirtualfunction2();
virtual void dummyvirtualfunction3();
virtual void dummyvirtualfunction5();
virtual void dummyvirtualfunction6();
};

只要靈活運用dummyvirtualfunction,你不光可以運用于加虛函數,也可以在刪虛函數時發揮其作用。

記住兩個操作原則:

  1. 當dummyvirtualfunction快用完時,再預先分配一些。
  2. 當這一階段開發結束時,該基類趨于穩定,把多余的dummyvirtualfunction去掉就可以了。

posted on 2010-06-17 11:52 Stone xin 閱讀(260) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区视频在线观看| 亚洲日韩第九十九页| 国产精品乱子久久久久| 亚洲福利在线看| 久久狠狠婷婷| 亚洲性xxxx| 欧美色欧美亚洲另类七区| 亚洲黄色av| 欧美国产亚洲视频| 美女诱惑一区| 亚洲国产婷婷香蕉久久久久久99| 久久爱www| 亚洲欧美综合精品久久成人| 国产精品久久国产精品99gif| 亚洲视频精品| 中文在线不卡视频| 国产精品欧美经典| 午夜精品三级视频福利| 亚洲一区中文| 国产视频欧美| 久久久久久久久久久久久9999| 性欧美大战久久久久久久久| 国产原创一区二区| 男女精品网站| 欧美激情麻豆| 亚洲欧美日韩一区在线| 国产亚洲精品7777| 欧美成人dvd在线视频| 欧美日韩亚洲高清| 久久久久久一区二区| 国产亚洲欧美日韩日本| 欧美xart系列在线观看| 欧美日韩免费一区二区三区视频 | 女主播福利一区| 久久久久久亚洲精品不卡4k岛国| 国产精品美女久久| 亚洲一级一区| 女仆av观看一区| 亚洲国产精品一区二区www在线| 欧美激情麻豆| 亚洲成人在线视频播放| 久久影音先锋| 久久av二区| 亚洲一区区二区| 日韩视频在线播放| 国产精品99久久久久久久vr | 美女精品网站| 欧美黄色aaaa| 欧美成人黑人xx视频免费观看| 日韩一区二区免费看| 亚洲影院色在线观看免费| 一区二区三区精品久久久| 亚洲视频 欧洲视频| 一区精品在线播放| 99国产欧美久久久精品| 国模精品娜娜一二三区| 亚洲精品中文在线| 国一区二区在线观看| 99在线视频精品| 在线精品国产欧美| 亚洲一区二区在线视频| 亚洲精品一区二区三| 欧美中文字幕在线| 亚洲一区中文| 欧美韩日亚洲| 麻豆精品视频在线| 国产精品私拍pans大尺度在线 | 亚洲最新视频在线播放| 精品999成人| 亚洲综合精品四区| 亚洲在线播放电影| 欧美成人按摩| 麻豆久久久9性大片| 国产日韩精品视频一区| 日韩视频免费| 国产精品手机视频| 国产精品久久午夜| 国内久久精品视频| 亚洲欧美日韩一区| 亚洲综合色视频| 久久久久久国产精品mv| 日韩一二三区视频| 国产日韩高清一区二区三区在线| 另类春色校园亚洲| 香蕉成人啪国产精品视频综合网| 欧美成人免费va影院高清| 亚洲一区二区三区777| 亚洲国产精品t66y| 黄色国产精品一区二区三区| 欧美区亚洲区| 久久久久在线观看| 欧美专区中文字幕| 久久国产精品亚洲77777| 亚洲精品一区二区在线| 久久乐国产精品| 亚洲精品一区中文| 欧美在线观看一区二区| 欧美在线观看天堂一区二区三区| 欧美日韩综合| 国产精品日日摸夜夜摸av| 国产精品xvideos88| 欧美片在线观看| 国产精品久久久久久户外露出| 亚洲一区二区三区在线视频| 亚洲欧美日韩一区二区| 国产精品久久久久久久久久免费 | 99国产精品国产精品久久| 国产精品99久久不卡二区| 欧美激情成人在线| 亚洲精品亚洲人成人网| 亚洲一区bb| 国产精品网站一区| 午夜日韩在线观看| 狂野欧美激情性xxxx欧美| 国产麻豆精品theporn| 午夜性色一区二区三区免费视频 | 欧美高清一区二区| 亚洲美女网站| 性欧美办公室18xxxxhd| 国际精品欧美精品| 欧美精品一区二区三区久久久竹菊| 亚洲精品美女在线| 亚洲一区二区在线| 国内精品福利| 欧美美女bb生活片| 欧美一级视频免费在线观看| 免费不卡在线观看av| 亚洲视频你懂的| 一区二区三区在线观看欧美| 欧美日本精品一区二区三区| 午夜精品网站| 亚洲三级免费电影| 久久久夜夜夜| 亚洲视频免费在线观看| 亚洲影音先锋| 久久亚洲视频| 亚洲午夜精品17c| 黄色免费成人| 国产精品免费一区二区三区观看| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲免费精品| 欧美激情在线有限公司| 亚洲欧美999| 国产精品欧美日韩一区| 亚洲欧美日韩国产综合在线 | 亚洲激情欧美| 久久综合狠狠综合久久综合88| 一本色道**综合亚洲精品蜜桃冫| 欧美一级午夜免费电影| 国产亚洲一级高清| 欧美顶级大胆免费视频| 久久综合婷婷| 日韩一区二区精品葵司在线| 欧美激情一区二区三区成人| 欧美阿v一级看视频| 91久久精品国产91性色tv| 亚洲二区视频| 欧美成人一区二区三区片免费| 亚洲大片精品永久免费| 亚洲国产精品高清久久久| 欧美国产日产韩国视频| 亚洲欧美日韩爽爽影院| 午夜一级久久| 精品成人一区二区| 亚洲综合色噜噜狠狠| 欧美日韩一区二区三区在线 | 亚洲欧美色婷婷| 亚洲精品视频免费观看| 欧美第一黄网免费网站| 久久一二三国产| 久久久国产视频91| 久久国产直播| 欧美专区在线观看| 性视频1819p久久| 欧美精品播放| 美女视频网站黄色亚洲| 久久久夜夜夜| 久久av资源网| 久久精品国内一区二区三区| 欧美一级大片在线观看| 亚洲欧美综合国产精品一区| 性伦欧美刺激片在线观看| 亚洲综合色视频| 午夜亚洲影视| 久久国产精品黑丝| 久久综合九色综合久99| 老司机免费视频久久| 欧美aⅴ99久久黑人专区| 欧美高清日韩| 欧美小视频在线| 国产欧美精品国产国产专区| 国精品一区二区| 在线观看日韩专区| 亚洲美女色禁图| 亚洲视频久久| 欧美主播一区二区三区美女 久久精品人| 性做久久久久久免费观看欧美| 久久成人羞羞网站| 亚洲第一久久影院| 9i看片成人免费高清|