Professional Documents
Culture Documents
1
Chương 6:
Khuôn hình
1. Khuôn hình hàm
2. Khuôn hình lớp
2
Chương 6: Khuôn hình
a. Khái niệm
Khuôn hình hàm là những hàm được xây
dựng với các tham số hình thức có kiểu
trừu tượng.
3
Chương 6: Khuôn hình
4
Chương 6: Khuôn hình
5
Chương 6: Khuôn hình
7
Chương 6: Khuôn hình
Ví dụ :
/*Cụ thể hóa hàm thể hiện char* Min(char *, char *) trong
khuôn hình Min()*/
char *Min(char *s1, char *s2) {
cout << “Goi char* Min(char *, char *)\n”;
if(strcmp(s1, s2) < 0)
return s1;
else return s2;
}
void main() {
<Giong vi du tren>
}
8
Chương 6: Khuôn hình
void main() {
int a = 12, b = 15, c = 2;
double x = 3.5, y = 4.25, z = 0.25;
int t[5] = {2, 3, 4, -1, 21};
char u[4] = {‘w’, ‘q’, ‘r’, q’};
cout << Min(a, b) << “\n”; //int Min(int, int)
cout << Min(a, b, c) << “\n”; //int Min(int, int, int)
cout << Min(x, y) << “\n”; /*double Min(double,
double)*/
cout << Min(x, y, z) << “\n”; /* double Min(double,
double, double)*/
cout << Min(t, 5) << “\n”; //int Min(int*, int)
cout << Min(u, 4) << “\n”; //char Min(char *, int)
}
10
Chương 6: Khuôn hình
11
Chương 6: Khuôn hình
12
Chương 6: Khuôn hình
13
Chương 6: Khuôn hình
MANG<float> a2;
Nhap(a2);
Xuat(a2);
}
14
Chương 6: Khuôn hình
15
Chương 6: Khuôn hình
17
Chương 6: Khuôn hình
Ví dụ 1:
template <class T> //T là đối số kiểu
class Diem {
private:
T x, y;
public:
Diem(T xx = 0, T yy = 0);
void Xuat();
};
template <class T>
Diem<T>::Diem(T xx, T yy) {
x = xx; y = yy;
}
18
Chương 6: Khuôn hình
19
Chương 6: Khuôn hình
Ví dụ 2:
template <class T, int n> /*T là đối số kiểu, n là đối số
biểu thức*/
class Vector {
private:
T a[n];
public:
void Nhap();
void Xuat();
};
void main() {
Vector<int, 10> u; /*Vector <int,10> là một lớp thể
hiện của khuôn hình lớp*/
u.Nhap();
u.Xuat();
}
20
Chương 6: Khuôn hình
22
Chương 6: Khuôn hình
Ví dụ:
template <class T> //T là đối số kiểu
class Diem {
private:
T x, y;
public:
Diem(T xx = 0, T yy = 0);
void Xuat();
};
/*Cụ thể hóa hàm thành phần Xuat() trong lớp thể hiện
Diem<char>*/
void Diem<char>::Xuat()
{
cout << “Goi hàm Diem<char>::Xuat()\n”;
cout << (int)x << “,” << (int)y << “\n”;
}
23
Chương 6: Khuôn hình
24