BÀI 9:FUNCTION OBJECT (ĐỐI TƯỢNG HÀM) Function object Một function object (đối tượng hàm) là một object (đối tượng) được sử dụng như một function (hàm). Một Một function object là một instance của một lớp mà lớp đó phải có ít nhất một hàm thỏa -quyền truy xuất phải là public. | LẬP TRÌNH C C NÂNG CAO Yêu cầu trước khi đọc học xong Lập trình C C căn bản BÀI 9 FUNCTION OBJECT ĐỐI TƯỢNG HÀM Function object Một function object đối tượng hàm là một object đối tượng được sử dụng như một function hàm . Một Một function object là một instance của một lớp mà lớp đó phải có ít nhất một hàm thỏa -quyền truy xuất phải là public -phải là một hàm thành viên không phải là một hàm friend -không phải là một hàm static -có khai báo operator Ví dụ ta viết một hàm bình thường như sau CODE void iprintf int i const cout i endl Bây giờ ta sẽ viết một lớp như sau CODE class iprintf public void operator int i const cout i endl Instance của lớp này là một object được gọi là function object là một object được sử dụng như một function. Sử dụng như thế nào CODE iprintf x x 5 CODE iprintf 5 Khi ta gọi iprintf 5 nghĩa là chúng ta đang gọi đến operator của lớp iprintf function object còn được gọi là một functor hay một functional. Từ đây khi đề cập đến function object sẽ dùng functor. Ví dụ dưới đây là một lớp có nhiều hơn một operator CODE class iprintf int i public iprintf int i i i public void operator const cout i endl void operator int i const http advc cout Integer i endl void operator float f const cout Float f endl int main int argc char argv iprintf x 20 x x 5 giả sử không có operator int i câu này sẽ gọi operator float f x giả sử không có operator float f câu này sẽ gọi operator int i với i 2 x something lỗi return 0 Tương tự thay vì iprintf 5 x 7 chúng ta cũng có thể gọi iprintf 5 7 Có một điều chú ý ở ví dụ trên là nếu cùng tồn tại operator int i và operator float f thì câu lệnh x sẽ báo lỗi ambiguous nhập nhằng giữa hai hàm. Có một cách đơn giản là viết lại thành x float Predicate Predicate có một định nghĩa khác phức tạp hơn. Ở đây chỉ nêu điều cần thiết nhất có liên can đến chương trình. Một predicate được đề cập đến ở đây là một function hoặc một functor có điều kiện giá trị trả về đúng hoặc sai hoặc một giá trị