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

高山流水

----- 要黑就黑徹底

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 猩猩 閱讀(323) 評論(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>
            欧美国产视频日韩| 亚洲最新视频在线播放| 欧美日韩123| 国产精品美女主播在线观看纯欲| 国产精品久久久久久久久久久久久| 亚洲国产小视频在线观看| 久久精品毛片| 亚洲一区在线免费观看| 欧美黄色网络| 亚洲国产导航| 久久久福利视频| 一本色道久久综合狠狠躁的推荐| 麻豆国产精品一区二区三区| 激情六月综合| 女主播福利一区| 另类综合日韩欧美亚洲| 狠狠色综合日日| 久久嫩草精品久久久久| 久久aⅴ乱码一区二区三区| 国产偷久久久精品专区| 久久精品国产99精品国产亚洲性色| 亚洲一区二区三区中文字幕| 国产精品区一区二区三| 午夜一区二区三区不卡视频| 亚洲一区二区三区午夜| 国产欧美日韩中文字幕在线| 欧美一级淫片aaaaaaa视频| 亚洲综合色视频| 国产视频在线观看一区| 久久久免费av| 免费美女久久99| 在线亚洲一区二区| 亚洲一区二区伦理| 国产亚洲观看| 欧美国产精品久久| 欧美日韩国产经典色站一区二区三区| 夜夜精品视频一区二区| 中文国产成人精品| 亚洲黄色成人| 久久只精品国产| 亚洲激情网站免费观看| 亚洲日本中文字幕| 国产精品久久久久久久浪潮网站| 午夜电影亚洲| 久久久精品欧美丰满| 亚洲激情在线激情| 一区二区冒白浆视频| 国产亚洲精品久久飘花| 免费欧美在线| 欧美午夜激情视频| 久久婷婷久久一区二区三区| 欧美成人国产| 亚洲一区免费在线观看| 久久色在线播放| 亚洲宅男天堂在线观看无病毒| 亚洲综合大片69999| 亚洲国产一区二区精品专区| 亚洲视频一区二区免费在线观看| 亚洲第一区在线| 亚洲午夜精品视频| 久久亚洲春色中文字幕| 欧美精品观看| 欧美在线视频一区| 欧美风情在线观看| 亚洲欧美在线aaa| 裸体歌舞表演一区二区| 亚洲伊人网站| 欧美刺激午夜性久久久久久久| 羞羞答答国产精品www一本| 免费91麻豆精品国产自产在线观看| 亚洲欧美国产另类| 欧美精品一区二区三区蜜桃| 久久亚洲私人国产精品va| 欧美性一二三区| 亚洲福利电影| 合欧美一区二区三区| 亚洲少妇最新在线视频| 在线日韩av永久免费观看| 亚洲一区美女视频在线观看免费| 亚洲国产高清一区| 亚洲国产高清在线观看视频| 国产一区二区欧美| 国产精品99久久99久久久二8 | 国产精品毛片a∨一区二区三区| 免费影视亚洲| 在线观看国产精品网站| 欧美一区二区国产| 亚洲欧美日韩综合aⅴ视频| 免费成人高清视频| 裸体一区二区| 一区免费观看| 久久久亚洲精品一区二区三区| 欧美一级视频精品观看| 国产精品超碰97尤物18| 99视频热这里只有精品免费| 日韩一级在线观看| 欧美国产日韩精品免费观看| 亚洲电影免费观看高清完整版在线| 在线观看欧美视频| 久久精品视频免费播放| 久久久精品网| 国产一区二区三区久久久久久久久| 午夜精品在线视频| 久久色中文字幕| 精品盗摄一区二区三区| 久久都是精品| 久热精品视频在线观看一区| 狠狠狠色丁香婷婷综合激情| 久久免费高清视频| 亚洲国产91| 亚洲伦理中文字幕| 欧美视频1区| 亚洲欧美日韩国产成人精品影院| 久久激情中文| 亚洲缚视频在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 欧美国产日本| 亚洲网站啪啪| 国产视频一区二区在线观看| 久久深夜福利| 国产精品sss| 亚洲国产精品专区久久| 欧美在线观看www| 韩国在线一区| 欧美激情综合色| 一区二区欧美激情| 久久不射中文字幕| 亚洲激情在线观看视频免费| 国产精品va在线播放| 欧美一级在线亚洲天堂| 亚洲第一毛片| 欧美一级大片在线观看| 狠狠干狠狠久久| 欧美高清影院| 欧美亚洲综合网| 亚洲国产你懂的| 欧美一区二区三区精品| 亚洲人永久免费| 国产精品视区| 欧美好吊妞视频| 亚洲欧美卡通另类91av| 欧美成年人视频网站欧美| 亚洲女人小视频在线观看| 狠狠噜噜久久| 国产精品theporn88| 久久一区免费| 亚洲免费人成在线视频观看| 欧美激情二区三区| 久久精品最新地址| 亚洲一区二区精品在线| 亚洲日本va午夜在线电影| 国产色综合天天综合网| 欧美国产精品va在线观看| 欧美在线国产| 亚洲影院免费| 一区二区不卡在线视频 午夜欧美不卡'| 久久久噜噜噜久久中文字免| 亚洲性线免费观看视频成熟| 一色屋精品亚洲香蕉网站| 欧美三级在线视频| 免费日韩一区二区| 欧美一区国产在线| 亚洲视频1区| 日韩视频不卡| 欧美黑人在线观看| 狂野欧美激情性xxxx欧美| 亚洲综合精品一区二区| 一区二区欧美在线观看| 亚洲精品永久免费精品| 怡红院av一区二区三区| 国模私拍视频一区| 国产亚洲精品成人av久久ww| 国产精品久久久久三级| 国产精品草草| 国产精品久久久爽爽爽麻豆色哟哟| 欧美 日韩 国产 一区| 久久婷婷综合激情| 久久精品国产一区二区三区免费看 | 久久se精品一区二区| 一区二区精品国产| 夜夜嗨av一区二区三区网页| 亚洲全黄一级网站| 亚洲毛片av在线| 日韩一级黄色av| 一区二区三区色| 一区二区三区欧美在线| 一区二区高清视频在线观看| 亚洲国语精品自产拍在线观看| 国产欧美日韩亚洲| 国产精品日韩专区| 国产毛片一区| 国产精品视频久久一区| 国产欧美日韩不卡免费| 欧美国产丝袜视频| 亚洲人成人一区二区在线观看| 免费亚洲一区二区| 亚洲成色精品| 99亚洲视频| 亚洲欧美日韩精品| 久久精品导航|