Adventures in Functions
阿新 • • 發佈:2018-11-10
速度還行,兩天看完一章,就是有細節沒去扣。書上的大部分知識點和程式碼都看了,這個還是可以的。
今天繼續來學習函式的高階特性,要涉及到以下的主題。
- 行內函數(inline function)
- 引用變數(reference variable)
- 通過引用傳遞函式引數
- 預設變數
- 函式過載
- 函式模板(template)
- 函式模板的specializations
C++行內函數
從機器語言的角度去解釋函式的呼叫為什麼會有開銷,這一點值得深入研究以下,增加認識。
C++的內斂函式會用相應的程式碼去替代函式呼叫,這樣的話不用跳到另一處去執行然後再跳回來,所以內斂函式要比一般的函式執行的稍快一些。
內斂函式不好的地方就是會佔用記憶體,比如這個函式在10個地方被呼叫了,那麼行內函數的這個程式碼會被存10份。
如何宣告一個行內函數?
什麼時候適合使用行內函數?
編譯器一定認可你的行內函數麼?
C++行內函數和C的巨集定義(macro definition)
#include <iostream> // 行內函數的定義 inline double square(double x) {return x * x; }; int main() { using namespace std; double a, b; double c = 13.0; a = square(5.0); b = square(4.5 + 7.5); cout << "a = " << ", b = " << b << "\n"; cout << "c = " << c; // c++的意思是, 先去計算表示式, c = 13 // 把c = 3 拿去函式呼叫, 然後c再自增 cout << ", c squared = " << square(c++) << "\n"; cout<< "Now c = " << c << "\n"; return 0; }
C++引用
https://www.cnblogs.com/tuhooo/p/5377406.html
預設引數
不太喜歡用預設引數,就這樣吧
函式過載
這個概念我知道
函式模板
C++裡面的泛型程式設計,抽取與型別無關的程式碼,達到通用的效果。