Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Khuôn hình 6.1. Khuôn hình hàm 6.1.1. Khái niệm Ta đã biết hàm quá tải 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. Khái niệm khuôn hình hàm cũng cho phép sử dụng cùng một tên duy nhất để thực hiện các công việc khác nhau, tuy nhiên so với định nghĩa hàm quá tải, nó có phần mạnh hơn và chặt chẽ hơn. | CHƯƠNG 6 KHUÔN HÌNH 6.1. Khuôn hình hàm 6.1.1. Khái niệm Ta đã biết hàm quá tải 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. Khái niêm khuôn hình hàm cũng cho phép sử dụng cùng một tên duy nhất để thực hiên các công việc khác nhau tuy nhiên so với định nghĩa hàm quá tải nó có phần mạnh hơn và chặt chẽ hơn. Mạnh hơn vì chỉ cần viết định nghĩa khuôn hình hàm một lần rồi sau đó chuơng trình biên dịch làm cho nó thích ứng với các kiểu dữ liêu khác nhau. Chặt chẽ hơn bởi vì dựa theo khuôn hình hàm tất cả các hàm thể hiên đuợc sinh ra bởi chuơng trình dịch sẽ tuơng ứng với cùng một định nghĩa và nhu vậy sẽ có cùng một giải thuật. 6.1.2. Tạo một khuôn hình hàm Giả thiết rằng chúng ta cần viết một hàm min đua ra giá trị nhỏ nhất trong hai giá trị có cùng kiểu. Ta có thể viết một định nghĩa nhu thế với kiểu int nhu sau int min int a int b if a b return a else return b Nếu ta muốn sử dụng hàm min cho kiểu double float char . ta lại phải viết lại định nghĩa hàm min ví dụ float min float a float b if a b return a else return b Lập trình HĐT 129 http www.ebook.edu.vn Như vậy ta phải viết rất nhiều định nghĩa hàm hoàn toàn tương tự nhau chỉ có kiểu dữ liêu là thay đổi. Chương trình dịch C cho phép giải quyết đơn giản vấn đề trên bằng cách định nghĩa một khuôn hình hàm duy nhất theo cú pháp template danh sách tham số kiểu kiểu trả về tên hàm khai báo tham số định nghĩa hàm trong đó danh sách tham số kiểu là các kiểu dữ liêu được khai báo với từ khoá class cách nhau bởi dấu phẩy. Kiểu dữ liêu là một kiểu bất kỳ kể cả kiểu class. Ví dụ 6.1 Xây dựng khuôn hình cho hàm tìm giá trị nhỏ nhất của hai số template class Kieuso Kieuso min Kieuso a Kieuso b if a b return a else return b 6.1.3. Sử dụng khuôn hình hàm Để sử dụng khuôn hình hàm min vừa tạo ra chỉ cần sử dụng hàm min trong những điều kiên phù hợp trong trường hợp này là hai tham số của hàm phải cùng kiểu dữ liêu. Như vậy nếu trong một chương trình có hai tham số nguyên n và m kiểu int với .