[Advance] Function template

Khi định nghĩa 1 hàm ta xác định rõ kiểu dữ liệu của các tham số, giá trị trả về.

Ví dụ:


int Max(int number1, int number2)

{

   return number1 > number2 ? number1 : number2;

}

Ví dụ trên ta định nghĩa 1 hàm tìm Max của 2 số nguyên. Nó sẽ xử lý tốt với kiểu int, nhưng nếu ta muốn sử dụng hàm đó với các kiểu dữ liệu khác thì sao? Trong C++ hỗ trợ ta nạp chồng hàm ta sẽ viết thêm hàm Max với các kiểu dữ liệu khác.


double Max(double number1, double number2)

{

   return number1 > number2 ? number1 : number2;

}

Tuy nhiên với mỗi kiểu dữ liệu ta lại định nghĩa hàm, nó sẽ rất bất tiện và tốn thời gian.

Trong C++ cung cấp cho ta 1 khái niệm mới là function template. Function template cho phép ta xây dựng hàm có cùng chức năng cho mọi kiểu dữ liệu (kể cả dữ liệu người dùng tự định nghĩa). Nói 1 cách khác là ta chỉ cần viết 1 hàm để dùng cho các kiểu dữ liệu khác nhau.

Để định nghĩa function template trong C++:

template<typename T1, typename T2,...>
//Định nghĩa hàm

Trong đó:

  • template, typename – Từ khóa trong C++.
  • T1, T2 – Đại diện cho kiểu dữ liệu, có thể đặt tên bất kỳ.

Ví dụ:


#include <iostream>

using namespace std;

template <typename T>
T Max(T number1, T number2)

{

   return number1 > number2 ? number1 : number2;

}

int main()

{

   int inumber1 = 10;

   int inumber2 = 20;

   //Gọi hàm Max cho kiểu int
   cout << Max(inumber1, inumber2) << endl;

   float fnumber1 = 30;

   float fnumber2 = 10.5f;

   //Gọi hàm Max cho kiểu float
   cout << Max(fnumber1, fnumber2) <<endl;

   return 0;

}

Kết quả:

20
30

Was this article helpful?

Leave A Comment?