国产一区在线观看视频-国产一区在线免费观看-国产一区在线视频-国产一区在线视频观看-国产一区中文字幕在线观看-国产一线二线三线女

正在閱讀:新手入門:關于C++中的內聯函數(inline)新手入門:關于C++中的內聯函數(inline)

2005-03-01 10:10 出處:PConline 作者:管寧 責任編輯:xietaoming
 

  在c++中,為了解決一些頻繁調用的小函數大量消耗?臻g或者是叫棧內存的問題,特別的引入了inline修飾符,表示為內聯函數。

  可能說到這里,很多人還不明白什么是?臻g,其實棧空間就是指放置程序的局部數據也就是函數內數據的內存空間,在系統下,?臻g是有限的,如果頻繁大量的使用就會造成因?臻g不足所造成的程序出錯的問題,函數的死循環遞歸調用的最終結果就是導致棧內存空間枯竭。

  下面我們來看一個例子:

#include <iostream
#include <string
using namespace std; 
 
inline string dbtest(int a); //函數原形聲明為inline即:內聯函數 
 
 
void main() 

    for (int i=1;i<=10;i++) 
    { 
        cout << i << ":" << dbtest(i) << endl; 
    } 
    cin.get(); 
 

 
string dbtest(int a)//這里不用再次inline,當然加上inline也是不會出錯的 

    return (a%2>0)?"奇":"偶"; 
 
}

  上面的例子就是標準的內聯函數的用法,使用inline修飾帶來的好處我們表面看不出來,其實在內部的工作就是在每個for循環的內部所有調用dbtest(i)的地方都換成了(i%2>0)?"奇":"偶"這樣就避免了頻繁調用函數對棧內存重復開辟所帶來的消耗。

  說到這里很多人可能會問,既然inline這么好,還不如把所謂的函數都聲明成inline,嗯,這個問題是要注意的,inline的使用是有所限制的,inline只適合函數體內代碼簡單的函數使用,不能包含復雜的結構控制語句例如while switch,并且不能內聯函數本身不能是直接遞歸函數(自己內部還調用自己的函數)。

  說到這里我們不得不說一下在c語言中廣泛被使用的#define語句,是的define的確也可以做到inline的這些工作,但是define是會產生副作用的,尤其是不同類型參數所導致的錯誤,由此可見inline有更強的約束性和能夠讓編譯器檢查出更多錯誤的特性,在c++中是不推薦使用define的。

  關于內聯函數的更多例子我就不一一舉出了,靈活的使用也多靠學習者本身,我只在此拋磚引玉,讓大家盡可能多的學習到c++中的一些新的先進的特性知識點。

302 Found

302 Found


Powered by Tengine
tengine
主站蜘蛛池模板: 看免费黄色一级视频 | 久久久久久久99精品免费 | 国产成人精品免费视频大全五级 | 久久免费精品国产视频 | 亚洲va天堂va国产va久 | 国产成人高清一区二区私人 | avtt亚洲一区中文字幕 | 国产亚洲综合在线 | 久久香蕉国产线看观看乱码 | 神马我不卡在线观看 | 精品欧美一区二区三区在线观看 | 天天操天天干视频 | 色人阁综合| julia中文字幕在线 | 国产视频在线播放 | 99热国产这里只有精品9九 | 午夜免费一级片 | 亚洲在线观看 | 久久99热只有频精品6不卡 | 99爱免费| 久久精品亚洲日本波多野结衣 | 狠狠操夜夜操 | 草久视频在线 | 久久精品国产亚洲麻豆 | 免费福利小视频 | 国产精品人伦久久 | 亚洲伊人久久综合影院2021 | 在线欧美日韩 | 久久99热这里只有精品7 | 国内精品中文字幕 | 亚洲精品一区二区深夜福利 | 日日摸夜夜爽日日放碰 | 人色在线视频 | 377p亚洲欧洲日本大胆色噜噜 | 欧美国产一区二区二区 | 亚洲国产日韩欧美一区二区三区 | 伊人精品在线 | 337p欧美超大胆日本人术艺术 | 午夜日韩 | 99re8热精品免费视频 | 久久久高清日本道免费观看 |