寫在前面

  由於此係列是本人一個字一個字碼出來的,包括示例和實驗截圖。本人非計算機專業,可能對本教程涉及的事物沒有了解的足夠深入,如有錯誤,歡迎批評指正。 如有好的建議,歡迎反饋。碼字不易,如果本篇文章有幫助你的,如有閒錢,可以打賞支援我的創作。如想轉載,請把我的轉載資訊附在文章後面,並宣告我的個人資訊和本人部落格地址即可,但必須事先通知我

你如果是從中間插過來看的,請仔細閱讀(一)羽夏看C語言——簡述 ,方便學習本教程。

模板

模板函式

  為了更快捷的寫重複性程式碼,所謂的重複性程式碼,就是裡面只有很少的東西不一樣,可以說是一個套路,但大量的類似這樣的程式碼會給維護帶來巨大的麻煩。為了更好的寫“重複性”程式碼,C++提供了模板,來幫助我們寫重複性程式碼。模板在彙編層面幫了我們做了什麼,我們用下面的程式碼進行實驗:

template <typename T>
bool Max(T a, T b)
{
return a > b ? a : b;
} int main()
{
int i = 39;
int j = 20;
Max(i, j); double f1 = 13.5;
double f2 = 20.7;
Max(f1, f2); char s1[] = "Hello";
char s2[] = "World";
Max(s1, s2);
return 0;
}

  下面是反彙編結果:

  從彙編來看,呼叫模板的時候,每一個型別都會生成一個“函式”,不過這個不是我們自己寫的。感興趣在每個模板函式call跟進去看看,你可以發現每一個都是新的“函式”。

模板類

  如果是模板類呢,我們用以下程式碼進行實驗:

template <class T>
class MyClass
{
public:
MyClass(T param)
{
test = param;
} private:
T test;
}; int main()
{
MyClass<int> clsint(2);
MyClass<float> clsfloat(5.0); return 0;
}

  如下是反彙編:

  從彙編來看,和模板函式無異,感興趣的也可以跟進去看看,本人就不再繼續了。

結語

  羽夏看C語言這個系列到這就結束了。如果有什麼好的建議或者文章如有什麼不足或者錯誤,歡迎批評指正。如果覺得不錯,給個支援,感謝。