C++_模板函式
阿新 • • 發佈:2018-12-28
參考以下大佬部落格:
我們為什麼需要模板?
同樣的函式,我們要為不同的引數型別寫不同的版本,程式的邏輯是一模一樣的,只是他們的型別是不一樣的。
如下:
void Swap(int & x, int & y)
{
int tmp = x;
x = y;
y = tmp;
}
void Swap (double & xr double & y)
{
double tmp = x;
x = y;
y = tmp;
}
我們可以為上面的兩個的函式寫一個模板函式,如下:
template<typename T> // 定義了抽象的資料型別 T
void Swap(T &x,T &y)
{
T tmp=x;
x=y;
y=tmp
}
或者,把關鍵字typename 替換成 class
template <class T>
void Swap(T & x, T & y)
{
T tmp = x;
x = y;
y = tmp;
}
模板函式被呼叫時,編譯器會根據傳入形參的不同,推導T變成對應的資料型別。
在類中寫一個方法時,我們同樣可以使用模板函式
如下:
class SwapTest{
public:
template<typename T>
void print(const T& t) {
std::cout << t << std::endl;
}
}
SwampTest *p = new SwampTest();
p->print("123");