本篇文章是學習C++ STL庫的第一篇筆記,主要記錄了使用template關鍵字創建模板函數的方法。
下面用一個非常簡單的例子解釋模板函數的用法 :
#include <iostream>
using namespace std;template <class T>
void myswap(T& a, T& b)
{T temp = a;a = b;b = temp;
}int main()
{int a = 10;int b = 20;cout << "a: " << a << " b: " << b << endl;myswap(a,b);cout << "a: " << a << " b: " << b << endl;double c = 11.5;double d = 3.14;cout << "c: " << c << " d: " << d << endl;myswap<double>(c,d);cout << "c: " << c << " d: " << d << endl;return 0;
}
輸出結果如下:
使用模板函數最大的優點,在于我們可以對一類函數進行統一定義,這類函數一般內部的邏輯相同,唯一的區別在于使用的參數,變量類型不同。使用模板函數對這一類函數進行統一定義,在調用和維護時都會更為方便。在上述例子中,我們實現了一個調換兩個變量值的函數,這個函數可以調換任意兩個同類型變量的值。
在使用模板函數時,首先我們使用關鍵字template定義一個變量類型的類,例如這里的T。我們可以同時定義幾個變量類型的類:
template <class T1, class T2...>
在調用模板函數時有兩種方式,第一種和普通函數一樣調用,例如上述例子中的:
myswap(a,b);
或者也可以定義好具體的類型:
myswap<double>(c,d);
1.需要注意的是,template定義的類模板,只對下一個函數有效。也就是說每次使用模板函數需要重新使用template關鍵字,一個模板函數對應一個template關鍵字。
2.模板函數仍然可以像普通函數一樣被重載。
3.當模板函數和普通函數都滿足調用的條件,程序會優先調用普通函數。
4.模板函數在調用的時候,其參數的類型必須嚴格對應,否則無法調用。
本篇文章主要參考了youtube視頻,鏈接如下:
https://www.youtube.com/watch?v=xEz4jdKEfSI&list=PLzKtnppOmiXD-pyI4bjNzn9Km2ugRkdUK&index=1