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

高山流水

----- 要黑就黑徹底

Inside The C++ Object Model 學習筆記--The Semantics of Function

Chapter 4.? The Semantics of Function: Function 語意學

4.1 Member 函數的各種調用方式
1. Nonstatic Member Function(非靜態成員函數)
??? 要做如下的轉換:
??? (1) 改寫函數的原形, 安插一個參數到member function中, 用于提供一個存取管道, 使class object 得以調用該函數, 這個額外的指針稱之為: this指針.
??? 如:??
?Point3d::magnitude()? 會轉換為:? Point3d::magnitude(Point3d *const? this)

??? (2)? 對函數內每一個針對nostatic data member的存取操作改經由this指針來存取.
???? 如:
?????????? return sqrt(
??this->_x? *? this->_x? + this->y * this->_y? + this->_z * this->_z;
??? (3)? 將對member function 重寫一個外部函數, 對函數名稱進行"mangling"處理, 使它生成一個獨一無二的名稱
???
2. Virtual Member Function(虛擬成員函數)
???? 例如:
? ptr->normalize();
? 它將被轉化為如下的調用:
?( * ptr->vptr[ 1 ])( ptr );
?這里有幾點說明: 
?i.? vptr是由編譯器生成的指針,指向virtual table
?ii.? 1 這里是virtual table slot 的索引值,它關聯到nomalize這個函數
?iii.? 第二個ptr表示this指針

3. Static Member Function(靜態成員函數)
???? 如果Point3d::normalize()是一個static member function的話,這兩個調用會轉化為一般的操作:
???? obj.normalize();
???? ptr->normalize();
???? 轉化為: 
???? // obj.normalize();
???? normalize__7Point3dSFv();
???? // ptr->normalize();
???? normalize__7Point3dSfv();

4.2 Virtual Member Functions(虛擬成員函數)
1. 單一繼承下的Virtual Functions
???? 一個多態的class object 身上增加兩個members:
?I.?? 一個字符串或數字,? 表示class的類型
?II.? 一個指針,指向某個表格,表格中帶有程序的virtual function的執行時期地址
??? 對于一個active virtual function包括下面三個內容: 
??????? I.?? 這個class 所定義的函數實體, 它會改寫一個可能存在的base class virtual function 函數實體.
?II.? 繼承自基類的實體, 這是在derived class 決定不改寫virtual function 時才會出現的情況
?III. 一個pure_virtual_called()函數實體,它既可以扮演pur virtual function的空間保衛者角色, 也可以當做執行期異常函數.

2. 多重繼承下的Virtual Functions
??? 這種繼承涉及到要調整this指針,并且要求不止一個vtbl和vptr,同時要好幾個這種虛表和指針

3. 虛擬繼承下的Virtual Functions


4.3 函數的效能

4.4 指向Member Functions的指針(Pointer-to-Member Functions)
1. 指向一般成員函數的指針(Nostatic member and novirtual member function)
??? 取一個nostatic member function的地址,? 如果該函數是novirtual, 則得到的結果是它在內存中真正的地址, 然而這個地址也不是完全的, 它也需要綁定到某個class object的地址上, 才能夠調用該函數. 所有的nostatic member functions都要對象的地址(用this指出).
??? 例如:
???? double (Point::*pmf)();?// 定義一個成員函數指針
????? pfm = &Point::y;???// 初始化這個指針為
???? (ptr->*pfm)() ;???// 調用為,? 編譯器轉化為: (pfm)(ptr)

2. 支持"指向Virtual Member Functions"的指針
??? 對于virtual function, 其地址在編譯時期是未知的, 所能知道的僅是virtual function在相關的vitual table 中的索引值. 也就是說對于一個virtual member function取其地址, 所能獲得的只是一個索引值.
??? 所以如果:
??? pmf = &Point::z();?// 獲得的是索引值,? 調用時:
??? (ptr.->pmf)()???// 會轉化為: (* ptr->vptr[(int)pfm] (ptr)

3. 在多重繼承下,指向Member Functions的指針
???? 比較復雜,? 定義了一個結構支持這們的操作

4. 指向 Member Functions 指針的效率


4.4 Inline Functions
1. inline functions的生成條件

2. 對形式參數的處理(Formal Arguments)
例如:

?1?inline?int?min(?int?i,?int?j?)?
?2??{?
?3?????return?i?<?j???i?:?j;?
?4??}?
?5??and?the?following?three?invocations?of?the?inline?function:
?6?
?7??inline?int?bar()?
?8??{?
?9?????int?minval;?
10?????int?val1?=?1024;?
11?????int?val2?=?2048;?
12?
13??/*(1)*/minval?=?min(?val1,?val2?);?
14??/*(2)*/minval?=?min(?1024,?2048?);?
15??/*(3)*/minval?=?min(?foo(),?bar()+1?);?
16?
17?????return?minval;?
18??}?

?
用下面的方式進行處理:
?? (1)? 直接的參數替換
?//(1)???? simple argument substitution
?minval = val1 < val2 ? val1 : val2;

?? (2) 如果實際參數是一個常量表達式(const expression),? 我們就可以在替換前完成對它的求值操作.
?//(2)? constant folding following substitution
?minval = 1024;
??
?? (3) 帶有副作用的實際參數, 引入臨時性的對象
?//(3)???? side-effects and introduction of temporary
?int t1;
?int t2;

?minval =? ( t1 = foo() ), ( t2 = bar() + 1 ),? t1 < t2 ? t1 : t2;

3. 對inline函數帶有局部變量的處理(Local Variables)
??? 如:
?inline int min( int i, int j )
?{
??int minval = i < j ? i : j;
??return minval;
?}
??? 對于如下的調用:
??? {
??? int local_var;
??? int minval;

??? // ...
??? minval = min( val1, val2 );
???? }

??? 轉換可能的結果是:

1?????{?
2?????int?local_var;?
3?????int?minval;?
4?????//?mangled?inline?local?variable?
5?????int?__min_lv_minval;?
6?
7?????minval?=??(?__min_lv_minval?=??val1?<?val2???val1?:?val2?),??__min_lv_minval;?
8??????}

?

posted on 2006-10-30 14:39 猩猩 閱讀(325) 評論(0)  編輯 收藏 引用 所屬分類: C&C++語言

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲激情视频网站| 国产一区二区三区精品久久久| 在线成人激情视频| 免费看亚洲片| 牛夜精品久久久久久久99黑人 | 欧美18av| av不卡在线| 亚洲在线国产日韩欧美| 国产色视频一区| 久热精品视频在线观看| 欧美电影在线| 亚洲女同精品视频| 久久九九国产精品| 亚洲人成在线影院| 一区二区不卡在线视频 午夜欧美不卡'| 欧美日韩国产小视频| 欧美一区二区三区免费观看| 欧美伊人久久| 99热精品在线观看| 欧美一区二区视频观看视频| 亚洲成人中文| 亚洲私人影院| 亚洲国产精品专区久久| 一片黄亚洲嫩模| 亚洲国产第一页| 一区二区三区高清在线| 在线电影一区| 在线一区亚洲| 亚洲国产精品传媒在线观看| 一本一本久久| 最新高清无码专区| 欧美日韩亚洲在线| 久久久精品999| 欧美日韩国产综合久久| 久久国产视频网| 欧美日韩国产123区| 久久国产精品一区二区三区| 欧美国产视频日韩| 久久精品毛片| 国产精品久久福利| 亚洲激情网址| 国内精品久久久久久久果冻传媒 | 亚洲国产综合在线看不卡| 国产欧美日本一区视频| 亚洲毛片av| 亚洲激情另类| 久久国产精品99国产精| 午夜一区不卡| 国产精品video| 亚洲电影激情视频网站| 黄色亚洲大片免费在线观看| 亚洲午夜精品一区二区| 一区二区三区精品在线| 欧美黄色aa电影| 欧美激情aⅴ一区二区三区| 好看的亚洲午夜视频在线| 亚洲欧美日韩综合| 亚洲欧美日本国产有色| 欧美日韩中文在线观看| 亚洲免费高清| 亚洲视频你懂的| 欧美日韩国产另类不卡| 亚洲国产天堂久久综合| 亚洲破处大片| 欧美成人xxx| 亚洲精品乱码久久久久久蜜桃91| 亚洲电影免费在线 | 午夜免费久久久久| 性色av香蕉一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲另类自拍| 一本一道久久综合狠狠老精东影业 | 久久婷婷人人澡人人喊人人爽| 国产情人综合久久777777| 午夜精品视频一区| 麻豆成人综合网| 亚洲国产99精品国自产| 欧美xx视频| 欧美福利网址| 日韩视频在线一区二区| 亚洲综合首页| 国产一区二区三区在线观看免费视频| 欧美一区二区三区在| 久久久久国产精品午夜一区| 在线观看91精品国产麻豆| 欧美成人亚洲成人| 日韩亚洲欧美成人一区| 小嫩嫩精品导航| 一区视频在线播放| 欧美日韩不卡| 欧美一区二区三区播放老司机| 久久人人爽爽爽人久久久| 欲色影视综合吧| 欧美三级在线视频| 久久国产加勒比精品无码| 亚洲电影下载| 先锋影音国产一区| 亚洲国产精品第一区二区| 欧美日韩中文字幕精品| 欧美淫片网站| 日韩视频中文| 毛片基地黄久久久久久天堂| 99视频精品全部免费在线| 国产精品主播| 欧美日韩国产色站一区二区三区| 性久久久久久久久| 亚洲精品一区二区三区av| 性感少妇一区| 99伊人成综合| 亚洲第一偷拍| 国产美女一区二区| 欧美精品色一区二区三区| 亚洲欧美日韩在线高清直播| 亚洲第一免费播放区| 性8sex亚洲区入口| 一本色道久久综合精品竹菊 | 亚洲美女诱惑| 狠狠色狠色综合曰曰| 欧美私人网站| 欧美福利影院| 久久婷婷国产综合国色天香| 亚洲作爱视频| 亚洲欧洲免费视频| 欧美成人第一页| 久久这里只有| 久久久99久久精品女同性| 中文精品视频一区二区在线观看| 亚洲电影av在线| 国产在线拍偷自揄拍精品| 国产精品久久久久久久久免费 | 国产精品99久久久久久白浆小说| 国产视频一区二区三区在线观看| 欧美极品一区| 免费观看在线综合| 久久视频在线视频| 久久精品视频导航| 欧美一区二区三区视频在线观看| 日韩视频中午一区| 亚洲精品欧洲| 亚洲精品久久久蜜桃| 欧美国产成人精品| 欧美国产日本韩| 欧美黄色片免费观看| 牛牛影视久久网| 老司机精品久久| 美日韩在线观看| 免费影视亚洲| 免费日韩成人| 欧美va亚洲va香蕉在线| 猫咪成人在线观看| 欧美大片在线观看一区| 欧美大片在线看免费观看| 亚洲丰满少妇videoshd| 亚洲第一精品夜夜躁人人躁| 亚洲国产成人不卡| 亚洲韩国精品一区| 日韩性生活视频| 亚洲午夜精品久久久久久app| 一区二区三区精品视频在线观看| 日韩午夜精品视频| 亚洲天堂av图片| 欧美在线视频免费| 麻豆精品在线播放| 欧美日韩国产bt| 国产欧美日韩精品在线| 韩国精品久久久999| 亚洲精品乱码久久久久| 一区二区三区视频在线| 亚洲欧美日韩综合国产aⅴ| 久久国产日韩| 亚洲国产高清一区| 在线天堂一区av电影| 欧美一区二区三区四区在线观看地址 | 亚洲黑丝一区二区| 亚洲网站啪啪| 欧美一区1区三区3区公司| 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美69wwwcom| 亚洲精品视频免费| 午夜欧美大尺度福利影院在线看| 久久久久www| 一区二区三区免费网站| 午夜一区在线| 亚洲高清资源综合久久精品| 亚洲图片欧美日产| 久久综合久久美利坚合众国| 欧美日本在线播放| 国模吧视频一区| 一区二区三区高清不卡| 久久久夜夜夜| 在线视频精品一| 美国成人直播| 国产一区二区三区高清播放| 一本色道久久综合精品竹菊 | 久久久www成人免费无遮挡大片| 欧美电影在线| 欧美在线一二三四区| 欧美日韩一区二区视频在线观看| 国内外成人免费激情在线视频| 亚洲视频免费在线观看|