tailieunhanh - Bài giảng Kỹ thuật lập trình: Bài 11 - TS. Đào Trung Kiên
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,. | Chapter 11: Lập trình khái quát (Generic programming) 1 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Khuôn mẫu hàm (Function templates) 2 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội General Đôi khi ta muốn viết một lần nhưng có thể tạo ra các hàm với tham số thuộc nhiều kiểu khác nhau, thay vì phải viết chồ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ác tham số 3 Có thể hiểu là viết gộp chung các hàm chồng giống nhau về mặt thuật toán Kiểu của các tham số là tham số của khuôn mẫu EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Định nghĩa hàm khái quát Ví 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 c T sẽ được xác định khi gọi hàm T 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” 4 template void swap(T& a, T& b) {.} EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Gọi hàm khái quát Gọ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: 5 int a, double max(a, max(x, max(a, b; x, y; b); // max(a, b); y); // max(x, y); x); // lỗi EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà .
đang nạp các trang xem trước