Các tham số kiểu của khn hình hàm

Một phần của tài liệu Giáo trình Lập trình hướng đối tượng (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề (Trang 35 - 37)

- Các biến truyền cho danh sách tham số của hàm phải chính xác với kiểu kha

8.1.4. Các tham số kiểu của khn hình hàm

Khn hình hàm có thể có một hay nhiều tham số kiểu, mỗi tham số đi liền sau từ khố class. Các tham số này có thể ở bất kỳ đâu trong định nghĩa của khn hình hàm, nghĩa là :

- Trong dòng tiêu đề (ở dòng đầu khai báo template). - Trong các khai báo biến cục bộ.

- Trong các chỉ thị thực hiện.

Trong mọi trường hợp, mỗi tham số kiểu phải xuất hiện ít nhất một lần trong khai báo danh sách tham số hình thức của khn hình hàm. Điều đó hồn tồn logic, bởi vì nhờ các tham số này, chương trình dịch mới có thể sản sinh ra hàm thể hiện cần thiết.

ở khn hình hàm min trên, mới chỉ cho phép tìm min của hai số cùng kiểu, nếu muốn tìm min hai số khác kiểu thì khn hình hàm trên chưa đáp ứng được. Ví dụ sau sẽ khắc phục được điều này.

Ví dụ

#include <iostream.h>

template <class kieuso1,class kieuso2> kieuso1 min(kieuso1 a,kieuso2 b) { return a<b ? a : b; } void main(){ float a =2.5; int b = 8;

cout << "so nho nhat la :" << min(a,b); }

Ví dụ Giả sử trong lớp SO các số int đã xây dựng, ta có xây dựng các tốn tử tải bội

< , << cho các đối tượng của class SO. Nội dung file ttclsso.h như sau: class SO

{

int giatri; public: SO(int x=0) { giatri = x; } SO (SO &tso) { giatri = tso.giatri; }

SO (){}; //Giong nhu ham thiet lap ngam dinh ~SO()

{ }

int operator<(SO & s) {

return (giatri <s.giatri); }

friend istream& operator>>(istream&,SO&); friend ostream& operator<<(ostream&,SO&); };

Chương trình sau đây cho phép thử hàm min trên hai đối tượng kiểu class:

Ví dụ Chương trình sau đây cho phép thử hàm min trên hai đối tượng kiểu class:

#include <iostream.h> #include <ttclsso.h>

template <class kieuso1,class kieuso2> kieuso1 min(kieuso1 a,kieuso2 b) { if (a<b) return a; else return b; } void main(){ float a =2.5; int b = 8;

cout << "so nho nhat la :" << min(a,b)<<endl; SO so1(15),so2(20);

cout << "so nho nhat la :" << min(so2,so1); }

Một phần của tài liệu Giáo trình Lập trình hướng đối tượng (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề (Trang 35 - 37)