### Khái niệm về Template trong C++
**Template** trong C++ là một tính năng cho phép định nghĩa hàm hoặc lớp mà không cần chỉ định kiểu dữ liệu cụ thể. Thay vào đó, bạn có thể sử dụng các tham số kiểu (type parameters) để tạo ra các hàm hoặc lớp có thể hoạt động với nhiều kiểu dữ liệu khác nhau. Điều này giúp tăng tính tái sử dụng mã và giảm thiểu sự trùng lặp.
### Ví dụ về hàm Template tính tổng
Dưới đây là ví dụ về một hàm template cho phép tính tổng của hai giá trị bất kỳ:
```cpp
#include <iostream>
using namespace std;
// Định nghĩa hàm template
template <typename T>
T add(T a, T b) {
return a + b; // Trả về tổng của a và b
}
int main() {
// Sử dụng hàm template với các kiểu dữ liệu khác nhau
cout << "Tổng của 5 và 10: " << add(5, 10) << endl; // Kiểu int
cout << "Tổng của 3.5 và 2.5: " << add(3.5, 2.5) << endl; // Kiểu double
cout << "Tổng của 'A' và 'B': " << add('A', 'B') << endl; // Kiểu char
return 0;
}
```
### Giải thích ví dụ:
1. **Hàm Template `add`**:
- Được định nghĩa với từ khóa `template`, cho phép nhận bất kỳ kiểu dữ liệu nào thông qua tham số kiểu `T`.
- Hàm nhận hai tham số cùng kiểu `T` và trả về tổng của chúng.
2. **Trong hàm `main()`**:
- Gọi hàm `add` với các kiểu dữ liệu khác nhau như `int`, `double`, và `char`.
- Kết quả sẽ được in ra màn hình