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

首頁 > 學院 > 開發設計 > 正文

17 - 05 - 12 C++初窺

2019-11-14 13:06:20
字體:
來源:轉載
供稿:網友

 

# 成員函數的聲明和定義:

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;	}}

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

于是我們要了解 內聯函數

l 內聯函數

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

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

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

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

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

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

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

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

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

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

內聯函數的定義方法 

定義內聯函數的方法很簡單,只要在函數定義的頭前加上關鍵字inline即可。

內聯函數的定義方法與一般函數一樣。

如:     

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

return x+y+z;     

編譯器不會創建真正的函數,而只是將這個內聯函數的所有代碼復制到調用函數中,

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

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

# 成員函數的聲明和定義:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柏乡县| 法库县| 日照市| 手机| 华容县| 临夏市| 台中县| 名山县| 塔河县| 石景山区| 阳高县| 富顺县| 三穗县| 射洪县| 古田县| 辽阳市| 湖州市| 玉门市| 邳州市| 甘德县| 南城县| 大姚县| 北安市| 安西县| 澳门| 治多县| 上饶市| 万年县| 铜鼓县| 安国市| 策勒县| 泽普县| 汨罗市| 防城港市| 神木县| 彩票| 余江县| 永丰县| 白山市| 太仓市| 噶尔县|