學習筆記(一):inline內聯函式
c++中關鍵字
inline取代了c語言中表達形式的巨集定義。如:#define myfunc(value1,value2)((value1-value2)/(value1+value2));
表達形式的巨集:
1.表達形式的巨集定義效率很高,使用預處理實現,沒有引數壓棧、**生成等一系列操作;
2.在使用時,預處理僅僅是做了簡單替換,引數型別沒有檢測;
3.無法使用類保護成員;
4.返回值無法做型別轉換。
inline關鍵字:
1.使用inline後,增加了編譯器的引數型別檢測,像普通函式一樣嚴格;
2.內聯函式的返回值使用方式同普通函式;
3.內聯函式作為類的成員函式,正常使用類的成員;
總之,內聯函式繼承了巨集定義表示式的優點,取消了巨集定義表示式的缺點。
使用方式:
內聯函式適用於簡單的表示式,任何使用的地方都會簡單的展開。如果函式過大,會造成**膨脹反而帶來壞處,一般用於類的訪問函式。
inline關鍵字只是給編譯器乙個建議。如果上百行的**,編譯器會自動轉換成普通函式去處理。如果在類內定義int getid();
這樣簡短的函式,編譯器也會自動按inline函式處理。
一直以來只在csdn上搜尋問題,看看諮詢,深深被各種大神折服。
書山有路勤為徑,學海無涯苦作舟。
----特開此部落格記錄學習道路上的點點滴滴,如有錯誤還請各位大神多多指教。
c 學習筆記 內聯函式(inline)
在c 中呼叫函式時,電腦要做很多事 呼叫前要先儲存暫存器,並在返回時恢復 而且還有實參到形參的傳值 如果乙個函式在原始碼中多次被呼叫,這樣就會很浪費計算機的資源,但是如果我們將這個函式宣告為內聯函式,就可不必有這樣的擔心了。例如這樣乙個函式 int max int x,int y return x ...
c 基礎學習筆記 內聯函式(inline)
函式呼叫需要建立棧記憶體環境,進行引數傳遞,並產生程式執行轉移,這些工作都需要時間開銷,有些函式使用頻率高,但 卻很短,因此c 提供了inline函式,減少函式呼叫的成本。內聯函式的函式體限制 內聯函式中,不能含有複雜的結構體控制語句,如switch和while等。如果內聯函式有這些語句,則編譯將該...
c 筆記 inline 內聯函式
相當於將inline函式中的內容直接copy到inline函式呼叫處。不用執行進入函式的步驟,直接執行函式體 相當於巨集,卻比巨集多了型別檢查,真正具有函式特性 編譯器一般不內聯包含迴圈 遞迴 switch 等複雜操作的內聯函式 在類宣告中定義的函式,除了虛函式的其他函式都會自動隱式地當成內聯函式。...