【C++】類內函數與內聯函數


今天本來在休息,結果小伙伴問了我個問題,把我的三觀都顛覆了。get到了新的知識點,這里記錄一下。

 

內類的函數,都默認為是內聯函數!!

 

這居然是真的。然后我就懵了。因為內聯函數應該是定義在頭文件里比較好,如果定義在cpp文件中,其他的文件就無法找到內聯函數進行展開了。

那么問題來了:難道我定義一個類后,所有的類內函數都寫在頭文件里??平時我們不是這么干的啊?

如果內聯函數沒有寫在頭文件里,編譯器如何處理呢?

答:當做普通函數處理!忽略其內聯的屬性!所以,就算是類內的函數,沒有定義在頭文件里也沒有關系,只不過是取消了其內聯的屬性而已!

 

如下面的例子,可以正常運行:

頭文件:

#ifndef __INLINE_CLASS_H__
#define __INLINE_CLASS_H__

#include<stdio.h>

inline void infun(int a, int b);

#endif

cpp1 有內聯函數定義

#include"inline_class.h"

inline void infun(int a, int b)
{
    printf("%d %d\n", a, b);
}

void fun2(int x, int y)
{
    infun(x+1, y-1);
}

cpp2引用了內聯函數

#include"inline_class.h"

void fun3(int x, int y)
{
    infun(x*2, y/2);
}

cpp3有主函數,引用了內聯函數

#include"inline_class.h"
int main()
{
    int a = 1;
    int b = 2;
    infun(a, b);
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM