91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ 內聯函數

發布時間:2020-07-30 06:35:42 來源:網絡 閱讀:439 作者:Aonaufly 欄目:編程語言

內聯函數和普通函數的區別:

普通函數在內存上只有一份,任何地方在調用她的時候分3步:

①:找出這個函數

②:執行此內聯函數

③:返回結果(可以是void),結束此函數,繼續執行此函數下面的代碼


但是內聯函數的調用步驟和不同函數是以一樣的 , 因為他在編譯的時候就不一樣:

如何編譯:

如果此函數是內聯函數,那么在編譯的時候,只要是此函數被調用的地方,編譯器都會copy一份此函數放入這個地方。所以,內聯函數的執行,就沒有不同函數那么多的步驟,直接就執行了。

這樣的好處是效率是比較高的,調用的地方多了 , 那么copy的次數也多,那樣占用的內存也多。


來一個簡單的內聯:

#include <iostream>
using namespace std;
inline void fun1()
{
    cout << "這是內聯函數" << endl;
}
int main()
{
    fun1();
    return 0;
}

解析:

申明內聯函數需要用到關鍵字 : inline

另外需要注意的地方:

①:函數申明(有申明)以及其實現都需要使用inline關鍵字

#include <iostream>
using namespace std;
inline void fun1();
inline void fun1()
{
    cout << "這是內聯函數" << endl;
}
int main()
{
    fun1();
    return 0;
}

②:類內定義-類外實現都需要使用inline關鍵字

#include <iostream>
using namespace std;
class InlineC
{
public:
    inline void fun();
};
inline void InlineC::fun()
{
    cout << "這是內聯函數" << endl;
}
int main()
{
    InlineC *in = new InlineC;
    in->fun();
    delete in;
    return 0;
}


內聯函數和宏相似,都是copy,但是他比宏要安全

舉個例子:

#include <iostream>
using namespace std;
#define SUM(x) x*x
class InlineC
{
public:
    inline void fun();
};
inline void InlineC::fun()
{
    cout << "這是內聯函數" << endl;
}
int main()
{
    InlineC *in = new InlineC;
    in->fun();
    delete in;
    cout << "--------------------------------------" << endl;
    cout << SUM(1+3) << endl;
    return 0;
}

結果:

C++ 內聯函數

并沒有得到結果 16 。

宏的嚴謹性沒inline高。


最后 , 一個默認 : 把inline的申明及實現寫在head里面。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

缙云县| 崇仁县| 根河市| 区。| 清水河县| 天峨县| 盖州市| 潼南县| 凭祥市| 甘孜县| 修武县| 龙泉市| 多伦县| 柳江县| 北宁市| 乌恰县| 泸西县| 平潭县| 桃园县| 华容县| 陵川县| 建始县| 图木舒克市| 赣州市| 盐山县| 太仓市| 中山市| 墨玉县| 唐海县| 新巴尔虎右旗| 礼泉县| 调兵山市| 奉新县| 广元市| 三台县| 旬邑县| 百色市| 修武县| 齐齐哈尔市| 东台市| 正定县|