Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
297,5 KB
Nội dung
Phần 2: Ngơn ngữ lập trình C++ Chương 6: Mẫu (template) Các nội dung Giới thiệu Mẫu hàm Mẫu lớp Giới thiệu Khái niệm Mẫu (template): Là kỹ thuật cho phép thành phần cần định nghĩa lần số lần, sử dụng lại nhiều lần cho nhiều đối tượng khác Là kỹ thuật cho phép tham số hóa kiểu liệu; cho phép định nghĩa cấu trúc Stack, với T tham số kiểu, đại diện cho kiểu DL phần tử Stack Sau T thay kiểu DL cụ thể, ví dụ int, C++ tự động tạo code để định nghĩa Stack Nó dùng để thay cho việc định nghĩa chồng hàm Trong C++, thành phần mà ta tạo Mẫu Hàm Lớp Mẫu hàm Khái niệm mẫu hàm Tạo mẫu hàm Sử dụng mẫu hàm Khái niệm mẫu hàm Là hàm mà định nghĩa có sử dụng nhiều mẫu Mẫu hàm dùng phép định nghĩa hàm lần, gọi nhiều lần với tham số kiểu liệu khác template template void swap (T &x, T &y){ void swap (T &x, T &y){ T zz= x; T = x; xx= y; = y; y= z; y= z; }} int i,i,j;j;char a,b; int char a,b; float x, y; float x, y; swap(i, j); swap(i, j); swap(a, b); swap(a, b); swap(x, y); swap(x, y); Tạo mẫu hàm Cú pháp Một mẫu hàm sử dụng nhiều tên mẫu Khai báo tên mẫu template template void swap1(T &x, T &y){ void swap1(T &x, T &y){ T zz= x; T = x; xx= y; = y; y= z; y= z; }} Tên mẫu sử dụng trongphần đầu và/hoặc thân hàm Tạo mẫu hàm Mẫu hàm có hai tên mẫu template template void swap2 (T &x, U &y){ void swap2 (T &x, U &y){ T zz= x; T = x; xx= (T) y; = (T) y; y= (U) z; y= (U) z; }} Sử dụng mẫu hàm Việc gọi mẫu hàm giống gọi hàm thông thường Hàm gọi này, gọi hàm thể Khi gọi hàm mẫu, tùy theo kiểu liệu hàm thể hiện, mà chương trình dịch tự động tạo định nghĩa phù hợp cho hàm Ví dụ áp dụng mẫu hàm #include #include using namespace std; using namespace std; 3 4 5 6 7 8 //Định nghĩa mẫu hàm //Định nghĩa mẫu hàm template template void swap1(T &a,T &b) {{ void swap1(T &a,T &b) T c; T c; c=a; a=b; b=c; c=a; a=b; b=c; }} int main(int argc, char* argv[]) {{ int main(int argc, char* argv[]) 10 int i=20,j=30; 10 int i=20,j=30; 11 char c1='A',c2='B'; 11 char c1='A',c2='B'; 12 float x=20.15, y=35.5; 12 float x=20.15, y=35.5; 13 //Gọi mẫu hàm 13 //Gọi mẫu hàm 14 swap1(i,j); 14 swap1(i,j); 15 swap1(c1,c2); 15 swap1(c1,c2); 16 swap1(x,y); 16 swap1(x,y); 17 cout