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

高山流水

----- 要黑就黑徹底

Inside The C++ Object Model 學(xué)習(xí)筆記--The Semantics of Function

Chapter 4.? The Semantics of Function: Function 語(yǔ)意學(xué)

4.1 Member 函數(shù)的各種調(diào)用方式
1. Nonstatic Member Function(非靜態(tài)成員函數(shù))
??? 要做如下的轉(zhuǎn)換:
??? (1) 改寫(xiě)函數(shù)的原形, 安插一個(gè)參數(shù)到member function中, 用于提供一個(gè)存取管道, 使class object 得以調(diào)用該函數(shù), 這個(gè)額外的指針?lè)Q之為: this指針.
??? 如:??
?Point3d::magnitude()? 會(huì)轉(zhuǎn)換為:? Point3d::magnitude(Point3d *const? this)

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

3. Static Member Function(靜態(tài)成員函數(shù))
???? 如果Point3d::normalize()是一個(gè)static member function的話,這兩個(gè)調(diào)用會(huì)轉(zhuǎn)化為一般的操作:
???? obj.normalize();
???? ptr->normalize();
???? 轉(zhuǎn)化為: 
???? // obj.normalize();
???? normalize__7Point3dSFv();
???? // ptr->normalize();
???? normalize__7Point3dSfv();

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

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

3. 虛擬繼承下的Virtual Functions


4.3 函數(shù)的效能

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

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

3. 在多重繼承下,指向Member Functions的指針
???? 比較復(fù)雜,? 定義了一個(gè)結(jié)構(gòu)支持這們的操作

4. 指向 Member Functions 指針的效率


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

2. 對(duì)形式參數(shù)的處理(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??}?

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

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

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

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

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

??? 轉(zhuǎn)換可能的結(jié)果是:

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 猩猩 閱讀(323) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C&C++語(yǔ)言

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩一级网站| 国产精品男gay被猛男狂揉视频| 国产亚洲综合精品| 136国产福利精品导航| 黑人一区二区| 欧美gay视频| 羞羞答答国产精品www一本| 免费看黄裸体一级大秀欧美| 亚洲午夜一区二区| 亚洲精品国产拍免费91在线| 欧美午夜一区二区福利视频| 欧美高清视频一区二区三区在线观看 | 欧美日韩精品免费看| 夜久久久久久| 欧美激情在线免费观看| 免费中文日韩| 欧美不卡福利| 久久视频在线免费观看| 欧美成人网在线| 另类天堂视频在线观看| 欧美一区二区免费| 欧美在线日韩在线| 亚洲影视中文字幕| 在线综合亚洲| 欧美在线国产| 欧美激情精品久久久久久黑人| 久久免费国产精品| 日韩视频第一页| 国产精品成人v| 欧美午夜性色大片在线观看| 国产精品一卡| 亚洲国产成人av| 在线亚洲美日韩| 欧美中文字幕第一页| 噜噜爱69成人精品| 一区二区三区欧美在线| 欧美激情1区2区| 亚洲欧美日韩久久精品| 欧美jizz19性欧美| 在线精品一区| 欧美一区二区三区视频在线| 亚洲视频www| 蜜臀久久99精品久久久画质超高清| 亚洲你懂的在线视频| 国产精品99久久久久久有的能看| 久久精精品视频| 亚洲一区二区高清| 欧美精品性视频| 亚洲精品一区在线观看| 亚洲精选91| 欧美日韩亚洲三区| 国产精品99久久久久久久vr| 黄色另类av| 久久久久久久久久久久久9999 | 在线观看欧美视频| 亚洲一区免费看| 欧美在线国产精品| 国内视频一区| 久久国内精品视频| 国产精品毛片一区二区三区| 午夜精品久久久久久久| 亚洲一区二区三区在线看 | 亚洲第一福利视频| 欧美影院久久久| 亚洲国产精品美女| 欧美精品在线一区二区| 亚洲一区二区三区精品动漫| 国产精品ⅴa在线观看h| 麻豆九一精品爱看视频在线观看免费 | 久久精品国产77777蜜臀| 欧美在线观看你懂的| 久久久久久久久久看片| 最新热久久免费视频| 亚洲精品视频在线观看免费| 国产精品视频免费| 亚洲一区二区在线| 久久九九电影| 一本久久知道综合久久| 国产一区在线视频| 国产精品一区毛片| 欧美精品国产精品| 欧美日韩成人一区| 欧美日韩不卡在线| 国产精品家教| 国产亚洲精品成人av久久ww| 国产精品毛片在线| 国内精品模特av私拍在线观看| 国产一区深夜福利| 亚洲电影第三页| 99精品国产在热久久下载| 亚洲日本欧美天堂| 中日韩高清电影网| 中国成人亚色综合网站| 亚洲一区在线观看视频| 欧美日韩精品欧美日韩精品一| 亚洲在线视频一区| 亚洲成色www8888| 亚洲在线免费| 亚洲国产精品精华液网站| 国产精品国产三级国产专播品爱网 | 快射av在线播放一区| 免费成人毛片| 欧美一区二区在线观看| 91久久精品www人人做人人爽| 国产欧美另类| 中文日韩电影网站| 亚洲国产日韩一级| 亚洲欧美日韩一区| 一本色道久久加勒比88综合| 久久精品一区中文字幕| 欧美在线视频免费播放| 牛人盗摄一区二区三区视频| 久久综合九色综合欧美就去吻| 欧美日韩国产色综合一二三四 | 久久久伊人欧美| 欧美丝袜一区二区| 亚洲精品中文字幕有码专区| 亚洲精品视频一区| 欧美激情在线观看| 欧美激情精品久久久六区热门| 欧美色综合网| 亚洲国产精品视频一区| 欧美激情第二页| 亚洲一区二区成人| 激情久久久久久久久久久久久久久久| 欧美二区在线| 亚洲高清资源综合久久精品| 亚洲国产精品美女| 亚洲最快最全在线视频| 亚洲国产一二三| 欧美精品成人| 午夜一区不卡| 亚洲黄色天堂| 国产午夜精品全部视频播放 | 欧美日韩在线大尺度| 欧美日本在线播放| 欧美日韩一区二区免费在线观看| 性视频1819p久久| 欧美激情精品| 欧美一区二区黄| 欧美日韩精品中文字幕| 国产一区自拍视频| 一区二区三区精品视频| 久久香蕉国产线看观看av| 亚洲欧美日韩中文播放| 欧美高清在线一区| 国产精品一二| 亚洲国产精品一区制服丝袜| 亚洲一级电影| 亚洲激情在线激情| 一本久久青青| 欧美国产第一页| 欧美揉bbbbb揉bbbbb| 亚洲第一福利在线观看| 久久福利毛片| 亚洲一区二区在线免费观看视频 | 亚洲黄一区二区| 久久精品动漫| 久久手机免费观看| 国产亚洲亚洲| 久久国产精品99精品国产| 亚洲激情在线视频| 久久天堂av综合合色| 欧美激情亚洲自拍| 亚洲日本va午夜在线电影| 一区二区免费在线观看| 亚洲字幕在线观看| 久久国产精品72免费观看| 亚洲综合第一页| 久久久视频精品| 久久国产福利国产秒拍| 欧美主播一区二区三区美女 久久精品人 | 久久久综合免费视频| 欧美日韩国产另类不卡| 国产伦精品一区二区三区免费| 欧美刺激性大交免费视频| 欧美色图天堂网| 国产一区二区成人久久免费影院| 99精品欧美一区二区三区 | 亚洲欧美成aⅴ人在线观看| 国产一区二区成人久久免费影院| 日韩一级不卡| 久久精品一区二区三区不卡| 久久欧美肥婆一二区| 一本一道久久综合狠狠老精东影业 | 国产亚洲一区在线播放| 亚洲欧美日韩电影| 欧美日韩999| 亚洲精品小视频在线观看| 一本色道久久综合| 亚洲人久久久| 久久嫩草精品久久久久| 久久福利资源站| 国产欧美韩日| 中文在线资源观看网站视频免费不卡 | 久久影院午夜论| 亚洲黄色一区二区三区| 亚洲三级电影在线观看| 亚洲一卡久久| 免费观看30秒视频久久|