學習筆記(一):inline內聯函數
C++中關鍵字
inline取代了C語言中表達形式的宏定義。如:#define MYFUNC(value1,value2)((value1-value2)/(value1+value2));
表達形式的宏:
1.表達形式的宏定義效率很高,使用預處理實現,沒有參數壓棧、代碼生成等一系列操作;
2.在使用時,預處理僅僅是做了簡單替換,參數類型沒有檢測;
3.無法使用類保護成員;
4.返回值無法做類型轉換。
inline關鍵字:
1.使用inline後,增加了編譯器的參數類型檢測,像普通函數一樣嚴格;
2.內聯函數的返回值使用方式同普通函數;
3.內聯函數作爲類的成員函數,正常使用類的成員;
總之,內聯函數繼承了宏定義表達式的優點,取消了宏定義表達式的缺點。
使用方式:
內聯函數適用於簡單的表達式,任何使用的地方都會簡單的展開。如果函數過大,會造成代碼膨脹反而帶來壞處,一般用於類的存取函數。
inline關鍵字只是給編譯器一個建議。如果上百行的代碼,編譯器會自動轉換成普通函數去處理。如果在類內定義int GetID(){return m_nID};
這樣簡短的函數,編譯器也會自動按inline函數處理。
一直以來只在CSDN上搜索問題,看看諮詢,深深被各種大神折服。
書山有路勤爲徑,學海無涯苦作舟。
----特開此博客記錄學習道路上的點點滴滴,如有錯誤還請各位大神多多指教。