Professional Documents
Culture Documents
Chương 4. Khuon Hinh
Chương 4. Khuon Hinh
Nội dung
4.1. Khái niệm
4.2. Khuôn hình hàm
4.3. Khuôn hình lớp
4.4. Một số bài tập
4.1. Khái niệm
• template là từ khóa trong C++,
• template là từ khóa báo cho trình biên dịch biết là đoạn mã sau
đây sẽ định nghĩa cho nhiều kiểu dữ liệu và mã nguồn sẽ được
biên dịch tương ứng cho từng kiểu dữ liệu.
4.2. Khuôn hình hàm
• Định nghĩa chồng hàm cho phép dùng một tên duy nhất cho nhiều hàm thực hiện các
công việc khác nhau.
• int tMax(int x, int y){return (x > y) ? x : y;} template <class T> T tMax(T x, T y){
return (x > y) ? x : y;
• float tMax(float x, float y){return (x > y) ? x : y;} }
• Trong đó:
• T, U, ...: là các kiểu tượng trưng nào đó
• template <class T, class U, ...>: xác định khuôn hình với các tham số kiểu T, U, ...
4.2. Khuôn hình hàm
void doi_cho(int &x, int &y){int tg=x; x=y; y=tg;}
- Template: Gom các xử lý với nhiều kiểu dữ liệu khác nhau về cùng một
chỗ để tránh việc viết lại code và tổng quát hóa quá trình xử lý dữ liệu.
>> Tựu chung hai ý tưởng này làm 1 ta sẽ thấy được việc vì sao lại xây
dựng các class template.
Ví dụ class template
Ví dụ thông dụng nhất về việc xây dựng các class template là
xây dựng các cặp (pair).
- Cặp <string, string> trong từ điển - <từ, nghĩa của từ>
- Cặp <int, string> trong quản lý danh sách sinh viên - <mã số
sinh viên, họ tên>
........
Lớp sinh viên int SV::getId () {
return this->masv;
class SV { };
int masv;
string hten; string SV::getName () {
return this->hten;
public : };
SV (int ma, string ht) : masv(ma), hten (ht) { };
int getId ();
string getName ();
};
Lớp từ vựng - WordBook string WB::getW () {
class WB{ return this->word;
};
string word;
string meaning;
string WB::getM () {
public : return this->meaning;
WB (string tu, string nghia){ };
word = tu;
meaning = nghia;
};
string getW ();
string getM ();
};
So sánh 2 lớp
class SV {
class WB{
string word;
int masv;
string meaning; string hten;
public : public :
WB (string tu, string nghia){ SV (int ma, string ht) :
word = tu; masv(ma), hten (ht) { };
meaning = nghia; int getId ();
};
string getName ();
string getW ();
string getM (); };
};
Ví dụ
// to do something intAr.setElement(0,100);