1. 程式人生 > >Adventures in Functions

Adventures in Functions

速度還行,兩天看完一章,就是有細節沒去扣。書上的大部分知識點和程式碼都看了,這個還是可以的。

今天繼續來學習函式的高階特性,要涉及到以下的主題。

  • 行內函數(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++裡面的泛型程式設計,抽取與型別無關的程式碼,達到通用的效果。