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

高山流水

----- 要黑就黑徹底

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

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

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

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

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

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

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

3. 虛擬繼承下的Virtual Functions


4.3 函數(shù)的效能

4.4 指向Member Functions的指針(Pointer-to-Member Functions)
1. 指向一般成員函數(shù)的指針(Nostatic member and novirtual member function)
??? 取一個nostatic member function的地址,? 如果該函數(shù)是novirtual, 則得到的結果是它在內存中真正的地址, 然而這個地址也不是完全的, 它也需要綁定到某個class object的地址上, 才能夠調用該函數(shù). 所有的nostatic member functions都要對象的地址(用this指出).
??? 例如:
???? double (Point::*pmf)();?// 定義一個成員函數(shù)指針
????? 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. 對形式參數(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??}?

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

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

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

3. 對inline函數(shù)帶有局部變量的處理(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>
            国产在线播放一区二区三区| 亚洲精品1234| 久久不射2019中文字幕| 亚洲一区在线视频| 国产欧美一区二区三区国产幕精品| 亚洲欧美日韩国产一区二区三区 | 久久国产精品一区二区三区四区| 亚洲一区二区高清| 国产亚洲欧美一区二区| 久久一区国产| 欧美精品一区二| 午夜亚洲伦理| 欧美中文字幕第一页| 亚洲成色777777女色窝| 亚洲国产精品一区制服丝袜 | 久久九九全国免费精品观看| 在线不卡a资源高清| 亚洲黄色天堂| 国产精品毛片| 久久亚洲免费| 欧美人与性动交cc0o| 午夜日韩在线| 久色成人在线| 亚洲综合成人在线| 久久精品久久99精品久久| 亚洲美女在线一区| 欧美伊人精品成人久久综合97 | 国产日韩一区欧美| 欧美黄色小视频| 国产精品久久久久久久久久尿| 久久深夜福利| 国产精品高潮呻吟久久av黑人| 久久久久九九视频| 欧美日韩另类国产亚洲欧美一级| 性做久久久久久免费观看欧美| 久久午夜电影| 欧美在线视频观看| 欧美日韩综合一区| 女女同性女同一区二区三区91| 国产精品久久久久久久久久免费看| 美女国产精品| 国产精品免费看| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲国产精品久久久久婷婷老年 | 91久久极品少妇xxxxⅹ软件| 一区二区三区四区五区视频| 91久久精品国产| 欧美在线观看视频| 欧美一区二区三区四区在线| 欧美日韩国产三级| 亚洲福利视频网站| 一区二区三区在线不卡| 亚洲欧美国产一区二区三区| 一本综合久久| 欧美国产在线观看| 欧美大片一区二区三区| 精品盗摄一区二区三区| 性欧美8khd高清极品| 亚洲欧美成人一区二区在线电影| 欧美日韩国产一区二区三区| 亚洲福利av| 亚洲欧洲另类国产综合| 麻豆国产va免费精品高清在线| 久久精品水蜜桃av综合天堂| 国产精品你懂的在线| 亚洲视频免费在线观看| 亚洲性感美女99在线| 欧美特黄一级| 宅男精品视频| 亚洲欧美视频在线| 国产精品乱码| 午夜精品久久久久影视 | 亚洲精选中文字幕| 欧美全黄视频| 一本一道久久综合狠狠老精东影业| 一区二区91| 欧美亚洲成人精品| 亚洲一区999| 欧美制服丝袜| 激情久久久久久久久久久久久久久久| 欧美一级成年大片在线观看| 久久精品国产免费观看| 精品88久久久久88久久久| 久久综合99re88久久爱| 91久久精品美女高潮| 99国产精品久久久久久久| 国产精品户外野外| 午夜一级久久| 农村妇女精品| 在线亚洲一区二区| 国产精品一区二区在线观看不卡 | 亚洲桃色在线一区| 久久黄色网页| 亚洲激情一区二区| 欧美三级欧美一级| 午夜精品久久久久久久久久久久久| 久久久久久久综合色一本| 亚洲国产成人一区| 欧美视频一区在线观看| 欧美呦呦网站| 亚洲精品在线电影| 久久青草久久| a4yy欧美一区二区三区| 国产日韩精品一区二区| 欧美高清免费| 亚洲一区二区欧美| 欧美激情在线狂野欧美精品| 亚洲在线观看| 亚洲人成小说网站色在线| 国产精品久久久久久户外露出| 久久精品伊人| 亚洲视频在线观看视频| 欧美国产一区视频在线观看| 亚洲综合色网站| 亚洲精品乱码久久久久久久久| 国产精品午夜春色av| 牛牛影视久久网| 欧美亚洲一区在线| 一区二区三区日韩欧美| 欧美激情一区二区三区成人| 欧美在线在线| 亚洲一区二区三区777| 91久久精品网| 激情视频一区二区| 国产婷婷色一区二区三区四区| 欧美日韩国产成人高清视频| 久久午夜影视| 久久久久国产精品午夜一区| 亚洲天堂男人| 国产精品99久久久久久白浆小说| 亚洲国产高清aⅴ视频| 欧美成人午夜激情视频| 久久久久成人网| 性亚洲最疯狂xxxx高清| 亚洲午夜高清视频| 99国内精品久久| 亚洲日本成人女熟在线观看| 在线日韩av| 狠狠色综合色区| 国产在线拍偷自揄拍精品| 国产精品综合久久久| 国产精品尤物| 国产女优一区| 国产麻豆日韩| 国产一区自拍视频| 国产亚洲一本大道中文在线| 国产亚洲欧美一区| 一区二区亚洲精品| 在线观看一区欧美| 亚洲黄页视频免费观看| 最新亚洲激情| 日韩午夜剧场| 亚洲视频一区| 欧美一区二区三区男人的天堂| 午夜精品福利视频| 欧美一区二区三区视频| 久久久福利视频| 久久一区二区三区超碰国产精品| 久久亚洲高清| 亚洲第一天堂无码专区| 亚洲欧洲另类国产综合| 99视频热这里只有精品免费| 中日韩高清电影网| 新片速递亚洲合集欧美合集| 欧美在线视频一区二区| 老牛嫩草一区二区三区日本| 欧美激情一区二区三区在线视频观看| 欧美激情亚洲激情| 欧美性开放视频| 国产三区精品| 亚洲第一中文字幕在线观看| 最新日韩中文字幕| 午夜老司机精品| 麻豆成人在线播放| 亚洲国产日日夜夜| 亚洲免费一区二区| 久久婷婷av| 国产精品第13页| 黄色日韩网站| 国产精品99久久久久久人| 欧美在线网址| 亚洲激情电影在线| 亚洲欧美日韩网| 欧美激情综合网| 国产最新精品精品你懂的| 亚洲激情电影中文字幕| 欧美在线观看天堂一区二区三区 | 亚洲欧美在线x视频| 久热精品视频在线观看| 日韩天堂在线视频| 久久精品免视看| 国产精品免费久久久久久| 亚洲电影免费在线| 欧美一区二区在线| 亚洲精品久久久久久久久| 久久福利影视| 国产精品国产三级国产普通话蜜臀 | 亚洲丰满在线| 欧美一区二区女人| 日韩视频免费观看高清完整版|