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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

新手入門:關(guān)于C++中的內(nèi)聯(lián)函數(shù)(inline)

2019-11-17 05:04:44
字體:
供稿:網(wǎng)友
 

  在c++中,為了解決一些頻繁調(diào)用的小函數(shù)大量消耗棧空間或者是叫棧內(nèi)存的問題,非凡的引入了inline修飾符,表示為內(nèi)聯(lián)函數(shù)。

  可能說到這里,很多人還不明白什么是??臻g,其實棧空間就是指放置程序的局部數(shù)據(jù)也就是函數(shù)內(nèi)數(shù)據(jù)的內(nèi)存空間,在系統(tǒng)下,??臻g是有限的,假如頻繁大量的使用就會造成因??臻g不足所造成的程序出錯的問題,函數(shù)的死循環(huán)遞歸調(diào)用的最終結(jié)果就是導(dǎo)致棧內(nèi)存空間枯竭。   下面我們來看一個例子:#include <iostream> 
#include <string> 
using namespace std; 
 
inline string dBTest(int a); //函數(shù)原形聲明為inline即:內(nèi)聯(lián)函數(shù) 
 
 
void main() 

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

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

    return (a%2>0)?"奇":"偶"; 
 
}  上面的例子就是標(biāo)準(zhǔn)的內(nèi)聯(lián)函數(shù)的用法,使用inline修飾帶來的好處我們表面看不出來,其實在內(nèi)部的工作就是在每個for循環(huán)的內(nèi)部所有調(diào)用dbtest(i)的地方都換成了(i%2>0)?"奇":"偶"這樣就避免了頻繁調(diào)用函數(shù)對棧內(nèi)存重復(fù)開辟所帶來的消耗。   說到這里很多人可能會問,既然inline這么好,還不如把所謂的函數(shù)都聲明成inline,嗯,這個問題是要注重的,inline的使用是有所限制的,inline只適合函數(shù)體內(nèi)代碼簡單的函數(shù)使用,不能包含復(fù)雜的結(jié)構(gòu)控制語句例如while switch,并且不能內(nèi)聯(lián)函數(shù)本身不能是直接遞歸函數(shù)(自己內(nèi)部還調(diào)用自己的函數(shù))。   說到這里我們不得不說一下在c語言中廣泛被使用的#define語句,是的define的確也可以做到inline的這些工作,但是define是會產(chǎn)生副作用的,尤其是不同類型參數(shù)所導(dǎo)致的錯誤,由此可見inline有更強的約束性和能夠讓編譯器檢查出更多錯誤的特性,在c++中是不推薦使用define的?! £P(guān)于內(nèi)聯(lián)函數(shù)的更多例子我就不一一舉出了,靈活的使用也多靠學(xué)習(xí)者本身,我只在此拋磚引玉,讓大家盡可能多的學(xué)習(xí)到c++中的一些新的先進(jìn)的特性知識點。 更多文章 更多內(nèi)容請看C/C++技術(shù)學(xué)堂  C/C++技術(shù)專題  Solaris基礎(chǔ)知識入門專題,或

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄱阳县| 肥西县| 泽库县| 云梦县| 崇左市| 东乌珠穆沁旗| 乐业县| 绩溪县| 廉江市| 墨竹工卡县| 英吉沙县| 万载县| 岱山县| 鄂托克旗| 延津县| 五河县| 沐川县| 克山县| 丹凤县| 大埔区| 通化县| 拜城县| 容城县| 枣阳市| 维西| 巍山| 安西县| 宁晋县| 峨边| 和顺县| 沧源| 鄂州市| 慈利县| 老河口市| 武穴市| 芜湖县| 岫岩| 陆川县| 马公市| 金沙县| 郯城县|