日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++的优秀特性2:inline 函数

發(fā)布時(shí)間:2024/1/17 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++的优秀特性2:inline 函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(轉(zhuǎn)載請(qǐng)注明原創(chuàng)于潘多拉盒子)

Inline函數(shù)是C++的一個(gè)很小的特性,在不計(jì)較效率的情況下,這個(gè)特性似乎可有可無(wú)。然而,C++天生是為最為廣泛的應(yīng)用場(chǎng)景設(shè)計(jì)的,因此,總會(huì)有關(guān)于效率的問(wèn)題。其實(shí),除了效率,inline函數(shù)還提供了另外一個(gè)便利:可讀性。當(dāng)一個(gè)函數(shù)比較小,比如只有一個(gè)return語(yǔ)句,那么把實(shí)現(xiàn)和聲明分開(kāi)不是一個(gè)很好的辦法。比如如下的一個(gè)成員函數(shù):

class List { public:size_t getSize() const{return _size;} private:size_t _size; };

如果將其中的getSize()函數(shù)的實(shí)現(xiàn)放在cpp文件中,則大大的不美:對(duì)于一個(gè)讀者來(lái)讀這個(gè)函數(shù),可以在第一時(shí)間了解該函數(shù)的功能。效率也很高,幾乎是訪問(wèn)成員變量一樣的效率。

一個(gè)函數(shù)是否inline跟這個(gè)函數(shù)聲明時(shí)是否使用inline關(guān)鍵字沒(méi)有關(guān)系,比如這個(gè)inline函數(shù)雖然沒(méi)使用inline關(guān)鍵字來(lái)聲明,但卻是inline的。反之,使用inline函數(shù)聲明,則不一定是inline的,比如該函數(shù)的定義如果放在cpp文件中,則不是inline的。

使用inline來(lái)聲明并在別處定義的inline函數(shù),必須實(shí)在h文件中定義的:這很容易理解,因?yàn)閕nline是編譯時(shí)行為,編譯器需要將代碼展開(kāi)放在調(diào)用者代碼中,因此編譯器需要在h文件中看到定義。比如下面的例子:

class List { public:size_t getSize() const; private:size_t _size; };inline size_t List::getSize() const {return _size; }

其中的getSize()就是一個(gè)inline函數(shù)。但如果變成:

class List { public:inline size_t getSize() const private:size_t _size; };// in cpp size_t List::getSize() const {return _size; }

雖然在聲明時(shí)使用了inline關(guān)鍵字,但定義卻放在了cpp文件中,因此不是inline函數(shù)。

雖然inline函數(shù)可以直接在聲明處就地定義,也可以用inline關(guān)鍵字聲明,再用inline關(guān)鍵字在h文件中定義,但是,出于以下的原因,建議在h文件中聲明處就地定義。

原則:

1. inline函數(shù)的行數(shù)要很小,最好小于3行。因?yàn)槿绻鹖nline函數(shù)很大, 那么調(diào)用的開(kāi)銷相對(duì)于執(zhí)行的開(kāi)銷,就顯得沒(méi)那么大了,沒(méi)必要inline。從可讀性上來(lái)考慮,臺(tái)大的函數(shù)實(shí)現(xiàn)會(huì)干擾可讀性。

筆者看到過(guò)很大的函數(shù),還用inline來(lái)實(shí)現(xiàn),實(shí)在是沒(méi)有必要,而且畫(huà)蛇添足了。

建議:

1. 構(gòu)造函數(shù)、析構(gòu)函數(shù),使用inline來(lái)實(shí)現(xiàn)。可讀性、效率需求。

2. 簡(jiǎn)單的get、set函數(shù),使用inline來(lái)實(shí)現(xiàn)。可讀性、效率需求。

3. 頻繁調(diào)用的小函數(shù),使用inline來(lái)實(shí)現(xiàn)。主要是效率需求。

Inline函數(shù)是個(gè)很常用的功能,但是也不能濫用。

?

轉(zhuǎn)載于:https://www.cnblogs.com/bqzhao/p/3538074.html

總結(jié)

以上是生活随笔為你收集整理的C++的优秀特性2:inline 函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。