(轉載)http://blog.csdn.net/chdhust/article/details/8036233
內聯函數的優越性:函數
一:inline定義的類的內聯函數,函數的代碼被放入符號表中,在使用時直接進行替換(像宏定義同樣展開),沒有了調用的開銷,效率很高。spa
二:類的內斂函數是一個真正的函數。.net
三:使用內聯函數inline能夠徹底取表明達式形式的宏定義。code
例子:blog
Class A { public: int readTest() { return nTest; } void setTest(int i); }; inline void A::setTest(int i) { nTest=i; };
說明:類A的成員函數readTest()和setTest()都是內聯函數,readTest()函數的定義體被放在類聲明之中,於是readTest()自動轉換成inline函數,setTest函數的定義體在類聲明以外,所以要加上inline關鍵字。get
總結inline函數與宏定義的區別:編譯
一、內斂函數在編譯時展開,而宏是在預編譯時就展開了class
二、在編譯時內斂函數能夠直接被嵌入到目標函數代碼中,而宏只是一個簡單的文本替換效率
三、內斂函數能夠完成諸如類型的檢測、語句是否正確等編譯功能,宏就不具有這種功能總結
四、宏不是函數,而inline函數是函數
五、宏在定義時要當心處理宏參數,(通常狀況是把參數用括弧括起來)。