Xem mẫu
- LẬP TRÌNH C/C++ NÂNG CAO
Yêu cầu trước khi đọc: học xong Lập trình C/C++ căn bản
BÀI 4: TEMPLATE
Hàm template
Giả sử chúng ta cần viết một hàm trả về số nguyên lớn nhất giữa 2 số
CODE
int maximum(int a,int b)
{
return (a>b)?a:b;
}
Rồi đến số thực chúng ta cũng làm như vậy
CODE
double maximum(double a,double b)
{
return (a>b)?a:b;
}
Rồi giả sử như với lớp Person chúng ta cũng phải làm như vậy (toán tử > đã
được overload)
CODE
Person maximum(Person a,Person b)
{
return (a>b)?a:b;
}
C++ cung cấp một giải pháp cho vấn đề này, đó là template
CODE
templateT maximum(T a,T b)
{
return (a>b)?a:b;
}
int main()
{
- int a=7;int b=5;
cout
- pair myobject(155,36);
myobject.getmaximum();
Thật tuyệt, đúng không ?
Vấn đề không đơn giản như vậy.
Đau đầu
Xem lại hàm template dưới đây
CODE
templateT maximum(T a,T b)
{
return (a>b)?a:b;
}
Ví dụ dưới đây thực ra là đang so sánh địa chỉ bộ nhớ (memory address) của
2 biến a và b
CODE
char* a = "hello";char* b = "world";
cout
- r = new int; //tương đương với p = new int
*r = 5; //tương đưong với *p = 5
cout
nguon tai.lieu . vn