国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

17 - 05 - 12 C++初窺

2019-11-14 12:26:57
字體:
來源:轉載
供稿:網(wǎng)友

 

# 成員函數(shù)的聲明和定義:

class Human {public:	void set(int) ;  //聲明	int PRint() { return weight; }private:	int weight;};int main( ) {	Human Tom,Mike;	Tom.set ( 111 ) ;	cout<<"Tom 's weight is:"<<Tom.print()<<"/n";	Mike.set(0);	cout<<"Mike 's weight is:"<<Tom.print()<<"/n";	return 0;}void Human::set ( int w) {	if ( w>0 || w<100 )		weight = w;	else{		cout<<"The weight should be  0~100,otherwise we'll set it 0 /n";		weight = 0;	}}

為什么非要將成員函數(shù)的聲明和定義分開?直接使用合并的成員函數(shù)豈不是更加間接和方便呢?

于是我們要了解 內聯(lián)函數(shù)

l 內聯(lián)函數(shù)

引入內聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調用的效率問題。 函數(shù)調用會帶來降低效率的問題,因為調用函數(shù)實際上將程序執(zhí)行順序轉移到函數(shù)所存放在內存中某個地址,

將函數(shù)的程序內容執(zhí)行完后,再返回到轉去執(zhí)行該函數(shù)前的地方。

這種轉移操作要求在轉去前要保護現(xiàn)場并記憶執(zhí)行的地址,轉回后先要恢復現(xiàn)場,并按原來保存地址繼續(xù)執(zhí)行。

因此,函數(shù)調用要有一定的時間和空間方面的開銷,于是將影響其效率。特別是對于一些函數(shù)體代碼不是很大,

但又頻繁地被調用的函數(shù)來講,解決其效率問題更為重要。通俗地說:當我們定義了一個函數(shù)以后,

編譯器就會在內存中為其創(chuàng)建一個指令集,當調用此函數(shù)時,程序就會跳轉到該指令集處,

若是對函數(shù)執(zhí)行上百次調用,那么就要來回跳轉上百次,這會嚴重影響到程序的執(zhí)行效率,

引入內聯(lián)函數(shù)實際上就是為了解決這一問題。 在程序編譯時,編譯器將程序中出現(xiàn)的內聯(lián)函數(shù)的調用表達式用內聯(lián)函數(shù)的函數(shù)體來進行替換。

顯然,這種做法不會產(chǎn)生轉去轉回的問題,但是由于在編譯時將函數(shù)休中的代碼被替代到程序中,

因此會增加目標程序代碼量,進而增加空間開銷。

內聯(lián)函數(shù)的定義方法 

定義內聯(lián)函數(shù)的方法很簡單,只要在函數(shù)定義的頭前加上關鍵字inline即可。

內聯(lián)函數(shù)的定義方法與一般函數(shù)一樣。

如:     

 inline int add_int (int x, int y, int z) {    

return x+y+z;     

編譯器不會創(chuàng)建真正的函數(shù),而只是將這個內聯(lián)函數(shù)的所有代碼復制到調用函數(shù)中,

這樣程序在執(zhí)行調用該函數(shù)時就不需要來回跳轉,效率自然提高了,但是由于復制多次,

也導致了程序的體積增大,所以當在函數(shù)體很小時,適宜使用內聯(lián)函數(shù)。

# 成員函數(shù)的聲明和定義:
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 涞源县| 云阳县| 文成县| 沐川县| 惠州市| 泉州市| 手游| 宁陕县| 湖北省| 安阳县| 桓仁| 嘉祥县| 凭祥市| 循化| 阳新县| 永胜县| 麻阳| 娄底市| 正镶白旗| 余姚市| 措美县| 凤台县| 东乡族自治县| 邹城市| 磐石市| 普宁市| 定州市| 武定县| 额敏县| 沧源| 靖江市| 平舆县| 台州市| 松阳县| 宜兰县| 德格县| 耿马| 图木舒克市| 定结县| 聂荣县| 包头市|