Danh mục

Bài giảng Kỹ thuật lập trình: Bài 11 - TS. Đào Trung Kiên

Số trang: 20      Loại file: pdf      Dung lượng: 545.55 KB      Lượt xem: 8      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 10,000 VND Tải xuống file đầy đủ (20 trang) 0

Báo xấu

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Kỹ thuật lập trình: Bài 11 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Khuôn mẫu hàm, định nghĩa hàm khái quát, gọi hàm khái quát, chồng hàm khái quát, cá biệt hoá hàm khái quát, khuôn mẫu lớp, phương thức bên ngoài khuôn mẫu lớp,...
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình: Bài 11 - TS. Đào Trung KiênChapter 11: Lập trình khái quát(Generic programming)1EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiKhuôn mẫu hàm(Function templates)2EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiGeneralĐôi khi ta muốn viết một lần nhưng có thể tạo ra các hàmvới tham số thuộc nhiều kiểu khác nhau, thay vì phải viếtchồng nhiều hàm tương tự nhauint max(int a, int b){ return a>b ? a:b; }double max(double a, double b) { return a>b ? a:b; }float max(float a, float b){ return a>b ? a:b; } lập trình ở mức độ khái quát cao hơn: coi kiểu của biến cũng làtham số (type parameterization)Khuôn mẫu hàm (function template): là khái niệm giúpđịnh nghĩa những hàm mà chưa xác định kiểu của cáctham số3Có thể hiểu là viết gộp chung các hàm chồng giống nhau về mặtthuật toánKiểu của các tham số là tham số của khuôn mẫuEE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiĐịnh nghĩa hàm khái quátVí dụ 1:template void swap(T& a, T& b) {T c = a; a = b; b = c; }T được giả định là kiểu của các tham số a, b và biến cT sẽ được xác định khi gọi hàmT là tham số của khuôn mẫu, trong khi a, b là tham số của hàmVí dụ 2:template void push(Containter& s, Object o) {...}Có thể dùng từ khoá “class” thay vì “typename”4template void swap(T& a, T& b) {...}EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiGọi hàm khái quátGọi với kiểu tường minh:max(a, b);max(x, y);swap(s1, s2);swap(p1, p2);push(l, st);Gọi với kiểu ngầm định:5int a,doublemax(a,max(x,max(a,b;x, y;b); //  max(a, b);y); //  max(x, y);x); //  lỗiEE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

Tài liệu được xem nhiều: