c++中的內(nèi)聯(lián)函數(shù)inline用法實(shí)例
問(wèn)題描述:類(lèi)中成員函數(shù)缺省默認(rèn)是內(nèi)聯(lián)的,如果在類(lèi)定義時(shí)就在類(lèi)內(nèi)給出函數(shù)定義,那當(dāng)然最好。如果在類(lèi)中未給出成員函數(shù)定義,而又想內(nèi)聯(lián)該函數(shù)的話(huà),那在類(lèi)外要加上 inline,否則就認(rèn)為不是內(nèi)聯(lián)的。內(nèi)聯(lián)函數(shù)的inline要加在函數(shù)前面,不可以加在聲明前面。
class A { public:void Foo(int x, int y) { } // 自動(dòng)地成為內(nèi)聯(lián)函數(shù) } //正確寫(xiě)法: // 頭文件 class A { public: void Foo(int x, int y); } // 定義文件 inline void A::Foo(int x, int y){} //錯(cuò)誤寫(xiě)法: inline void Foo(int x, int y); // inline 僅與函數(shù)聲明放在一起 void Foo(int x, int y){}
1. 內(nèi)聯(lián)函數(shù)作用:為了解決一些頻繁調(diào)用的小函數(shù)大量消耗棧空間(棧內(nèi)存)的問(wèn)題,特別的引入了 inline 修飾符,表示為內(nèi)聯(lián)函數(shù)。
例子:
#include <stdio.h> //函數(shù)定義為inline即:內(nèi)聯(lián)函數(shù) inline char* dbtest(int a) { return (i % 2 > 0) ? "奇" : "偶"; } int main() { int i = 0; for (i=1; i < 100; i++) { printf("i:%d 奇偶性:%s /n", i, dbtest(i)); } }
內(nèi)聯(lián)函數(shù)是在程序編譯的時(shí)候替換的方式加入程序中的。
2. 內(nèi)聯(lián)函數(shù)使用的限制:
inline 的使用是有所限制的,inline 只適合涵數(shù)體內(nèi)代碼簡(jiǎn)單的涵數(shù)使用,不能包含復(fù)雜的結(jié)構(gòu)控制語(yǔ)句例如 while、switch,并且不能內(nèi)聯(lián)函數(shù)本身不能是直接遞歸函數(shù)(即,自己內(nèi)部還調(diào)用自己的函數(shù))。
代碼較長(zhǎng),內(nèi)部出現(xiàn)循環(huán)不適合使用內(nèi)聯(lián)函數(shù)。
3. 內(nèi)聯(lián)函數(shù)只是一個(gè)對(duì)編譯器的建議,具體實(shí)不實(shí)現(xiàn)看編譯器認(rèn)為函數(shù)復(fù)不復(fù)雜。
4.內(nèi)聯(lián)函數(shù)最好放在頭文件中。
以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
- C++深入探索內(nèi)聯(lián)函數(shù)inline與auto關(guān)鍵字的使用
- C++入門(mén)(命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto,范圍for)
- c++ 內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別
- C++編程中隊(duì)內(nèi)聯(lián)函數(shù)的理解和使用
- 詳解C++中的內(nèi)聯(lián)函數(shù)和函數(shù)重載
- c++內(nèi)聯(lián)函數(shù)(inline)使用詳解
- 深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)歌手比賽系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)歌手比賽系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05簡(jiǎn)單掌握C++編程中的while與do-while循環(huán)語(yǔ)句使用
這篇文章主要介紹了C++編程中的while與do-while循環(huán)語(yǔ)句使用,區(qū)別就是while是先判斷再執(zhí)行,而do-while是先執(zhí)行再判斷,需要的朋友可以參考下2016-01-01數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實(shí)例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05c++調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別
所謂c++調(diào)用python,實(shí)際上就是在c++中把整個(gè)python當(dāng)作一個(gè)第三方庫(kù)引入,然后使用特定的接口來(lái)調(diào)用python的函數(shù)或者直接執(zhí)行python腳本,本文介紹的是調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別,感興趣的可以了解下2023-09-09淺析C++中boost.variant的幾種訪問(wèn)方法
variant類(lèi)型在C++14并沒(méi)有加入,若想在不支持C++17的編譯器上使用variant類(lèi)型,我們可以通過(guò)boost的variant類(lèi)型,variant類(lèi)型可以表示任意一種類(lèi)型和any類(lèi)型有些相似,但還是有些區(qū)別下面將淺談variant的幾種訪問(wèn)方法,感興趣的朋友們下面來(lái)一起看看吧。2016-10-10淺談c++調(diào)用python鏈接的問(wèn)題及解決方法
下面小編就為大家?guī)?lái)一篇淺談c++調(diào)用python鏈接的問(wèn)題及解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03C++高性能服務(wù)器框架之協(xié)程調(diào)度模塊
這篇文章主要介紹了C++高性能服務(wù)器框架中的協(xié)程調(diào)度模塊,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-06-06