最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++超詳細(xì)分析講解內(nèi)聯(lián)函數(shù)

 更新時(shí)間:2022年06月03日 09:21:06   作者:Bright-SKY  
為了消除函數(shù)調(diào)用的時(shí)空開銷,C++ 提供一種提高效率的方法,即在編譯時(shí)將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語言中的宏展開。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)

宏函數(shù)(帶參數(shù)的宏)的缺點(diǎn)

第一個(gè)問題:宏函數(shù)看起來像一個(gè)函數(shù)調(diào)用,但是會(huì)有隱藏一些難以發(fā)現(xiàn)的問題。

例如:

#define FUN(x, y) (x * y)
printf("%d", add(3, 3 + 2))    //3 * 3 + 2 = 11

以上情況可以通過加 “()” 解決:

#define FUN(x, y) (x * y)
printf("%d", add(3, (3 + 2)))    //3 * (3 + 2) = 15

特殊情況加()也保證不了參數(shù)的完整性:

#define GET_MAX_DATA(a, b) ((a)>(b)?(a):(b))
void test02()
{
    int a = 3;
    int b = 5;
    //((a)>(++b)?(a):(++b))  無法保證參數(shù)的完整性
    printf("最大值為:%d\n", GET_MAX_DATA(a,++b));//7
}

第二個(gè)問題是c++特有的,預(yù)處理器不允許訪問類的成員,即預(yù)處理器宏不能用作類的成員函數(shù)

內(nèi)聯(lián)函數(shù):內(nèi)聯(lián)函數(shù)為了繼承宏函數(shù)的效率,沒有函數(shù)調(diào)用時(shí)開銷,然后又可以像普通函數(shù)那樣,可以進(jìn)行參數(shù),返回值類型的安全檢查,又可以作為成員函數(shù)

內(nèi)聯(lián)函數(shù):是一個(gè)真正的函數(shù)。函數(shù)的替換 發(fā)生在編譯階段

inline修飾的函數(shù)就是內(nèi)聯(lián)函數(shù)

inline int myAdd(int x, int y)//inline必須出現(xiàn)在函數(shù)的定義處
{
    return x+y;
}

內(nèi)聯(lián)函數(shù)為了繼承宏函數(shù)的效率,沒有函數(shù)調(diào)用時(shí)開銷,然后又可以像普通函數(shù)那樣,可以進(jìn)行參數(shù), 返回值類型的安全檢查,又可以作為成員函函數(shù)。

內(nèi)聯(lián)函數(shù):是在編譯階段 完成的替換。

inline int my_mul(int x,int y)
{
    return x*y;
}
void test01()
{
    cout<<"my_mul = "<<my_mul(10+10,20+20)<<endl;
}

任何在類內(nèi)部定義的函數(shù)自動(dòng)成為內(nèi)聯(lián)函數(shù)。

內(nèi)聯(lián)函數(shù)的特點(diǎn)

1、能保證參數(shù)的完整性

2、有作用域的限制,可以成為類的成員

3、類中的成員函數(shù) 默認(rèn)都是內(nèi)聯(lián)函數(shù)(不用inline)

內(nèi)聯(lián)函數(shù)的要求:

不能存在任何形式的循環(huán)語句 不能存在過多的條件判斷語句 函數(shù)體不能過于龐大 不能對(duì)函數(shù)進(jìn)行取地址操作。

內(nèi)聯(lián)僅僅只是給編譯器一個(gè)建議。(具體處理方式由編譯器來決定)

宏函數(shù)和內(nèi)聯(lián)函數(shù)的區(qū)別

宏函數(shù):

預(yù)處理階段完成替換、沒有出入棧的開銷、不能保證參數(shù)的完整性、沒有作用域限制、不能作為類的成員

內(nèi)聯(lián)函數(shù):

編譯階段完成替換、沒有出入棧的開銷、能保證參數(shù)的完整性、有作用域限制、能作為類的成員

到此這篇關(guān)于C++超詳細(xì)分析講解內(nèi)聯(lián)函數(shù)的文章就介紹到這了,更多相關(guān)C++內(nèi)聯(lián)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中static和const的作用和用法

    C++中static和const的作用和用法

    在C++中,"static"和"const"都是用于修飾變量的關(guān)鍵字,它們具有不同的作用,本文通過代碼示例給大家詳細(xì)的介紹static和const的作用和用法,,需要的朋友可以參考下
    2023-06-06
  • c++ 虛繼承,多繼承相關(guān)總結(jié)

    c++ 虛繼承,多繼承相關(guān)總結(jié)

    這篇文章主要介紹了c++虛繼承,多繼承相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-03-03
  • 使用C++實(shí)現(xiàn)簡單的文章生成器

    使用C++實(shí)現(xiàn)簡單的文章生成器

    這篇文章主要為大家詳細(xì)介紹了鵝湖使用C++實(shí)現(xiàn)簡單的狗屁不通文章生成器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2024-03-03
  • C語言中進(jìn)程信號(hào)集的相關(guān)操作函數(shù)詳解

    C語言中進(jìn)程信號(hào)集的相關(guān)操作函數(shù)詳解

    這篇文章主要介紹了C語言中進(jìn)程信號(hào)集的相關(guān)操作函數(shù)詳解,包括sigismember函數(shù)和sigfillset函數(shù)以及sigemptyset函數(shù)的用法,需要的朋友可以參考下
    2015-09-09
  • 基于C語言代碼實(shí)現(xiàn)點(diǎn)餐系統(tǒng)

    基于C語言代碼實(shí)現(xiàn)點(diǎn)餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C語言代碼實(shí)現(xiàn)點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C++取得本機(jī)IP的方法

    C++取得本機(jī)IP的方法

    這篇文章主要介紹了C++取得本機(jī)IP的方法,代碼簡單功能實(shí)用,具有不錯(cuò)的借鑒參考價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++ opencv實(shí)現(xiàn)的把藍(lán)底照片轉(zhuǎn)化為白底照片功能完整示例

    C++ opencv實(shí)現(xiàn)的把藍(lán)底照片轉(zhuǎn)化為白底照片功能完整示例

    這篇文章主要介紹了C++ opencv實(shí)現(xiàn)的把藍(lán)底照片轉(zhuǎn)化為白底照片功能,結(jié)合完整實(shí)例形式詳細(xì)分析了C++使用opencv模塊進(jìn)行圖片轉(zhuǎn)換操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • C語言MultiByteToWideChar和WideCharToMultiByte案例詳解

    C語言MultiByteToWideChar和WideCharToMultiByte案例詳解

    這篇文章主要介紹了C語言MultiByteToWideChar和WideCharToMultiByte案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • OpenCV實(shí)現(xiàn)摳圖工具

    OpenCV實(shí)現(xiàn)摳圖工具

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)摳圖工具,文中示例代碼介紹的非常詳細(xì),具有一定為大家詳細(xì)的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表

    C語言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表

    這篇文章主要為大家詳細(xì)介紹了c語言實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)之通用鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論

黔江区| 汨罗市| 中江县| 临清市| 资兴市| 北安市| 石台县| 林甸县| 蕲春县| 长治市| 宜兰市| 柳州市| 宁波市| 太白县| 茶陵县| 门源| 泽库县| 方城县| 临洮县| 明溪县| 湾仔区| 秦皇岛市| 台东市| 江北区| 称多县| 韶山市| 西昌市| 旬阳县| 勐海县| 巧家县| 遂宁市| 甘洛县| 包头市| 朝阳区| 平谷区| 长汀县| 永登县| 确山县| 达日县| 南开区| 长治县|