麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

17 - 05 - 12 C++初窺

2019-11-14 12:26:57
字體:
來源:轉載
供稿:網友

 

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

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;     

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

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

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

# 成員函數的聲明和定義:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产精品久久 | 91情侣偷在线精品国产 | 亚洲视频在线观看免费 | av成人在线电影 | 日韩av有码在线 | 亚洲导航深夜福利涩涩屋 | 国产啊v在线观看 | 黄视频在线网站 | 亚洲va久久久噜噜噜久牛牛影视 | 国产精品热 | 中文字幕在线观看国产 | 88xx成人永久免费观看 | 亚洲成人在线免费观看 | 欧美a视频 | 亚洲最大的成人网 | 视频一区 中文字幕 | 一级电影在线免费观看 | 免费国产在线观看 | 久久精品男人 | 黄色网址你懂的 | 叉逼视频 | 久久国产夫妻视频 | 欧美在线观看视频网站 | 成人午夜在线播放 | 嗯~啊~用力~高h | 天天看逼| 国产精品久久久久久久久久iiiii | 免费三级大片 | www中文在线 | 精品久久久久久 | 日本68xxxx| 久草在线小说 | 国产精品99久久久久久久女警 | 斗破苍穹在线免费 | qyl在线视频精品免费观看 | 久久综合给合久久狠狠狠97色69 | 日本成年免费网站 | 神秘电影91 | av免费在线播放 | 久久久一区二区三区四区 | 久久精品com |