C++ 函數模板是一種泛型編程技術,它允許你編寫一個函數,它可以處理多種數據類型,而無需為每種數據類型編寫單獨的函數。這可以減少代碼重復并提高代碼的可維護性。以下是一個簡單的示例,說明如何使用函數模板簡化函數定義:
假設我們有一個函數,用于計算兩個數的和:
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int x = 3, y = 4;
std::cout << "x + y = " << add(x, y) << std::endl;
return 0;
}
現在,我們將使用函數模板來簡化這個函數定義:
#include <iostream>
// 函數模板定義
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
int x = 3, y = 4;
double p = 3.5, q = 4.5;
std::cout << "x + y = " << add(x, y) << std::endl;
std::cout << "p + q = " << add(p, q) << std::endl;
return 0;
}
在這個示例中,我們使用了一個名為 template <typename T>
的模板聲明,它告訴編譯器我們正在定義一個泛型函數。T
是一個占位符類型,它將在編譯時替換為實際的數據類型。這樣,我們就可以使用相同的 add
函數來處理不同類型的參數,而無需為每種數據類型編寫單獨的函數。
注意,當你使用函數模板時,編譯器將根據傳遞給函數的實際參數類型生成相應的特化。在這個例子中,編譯器將為 int
類型生成一個 add
函數特化,為 double
類型生成另一個特化。這使得我們可以使用相同的函數定義來處理不同類型的參數。