STL lập trình khái lược trong C++ part 6

Tham khảo tài liệu 'stl lập trình khái lược trong c++ part 6', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | 177 Chương 4. ĐÔI TƯỢNG HÀM Trong chương trình có thể dùng hàm printEval VỚI tham số thứ hai là con trỏ hàm square2 và cỏ kết quả tương tự như dùng đối tượng hàm square. Ị printEval 4 square2 In ra 16 ị I __ __ __I Đến đây người đọc có thể hỏí tại sao lại dùng đối tượng hàm trong khi với con trỏ hàm cũng có kết quả tương tự. Ta chú ý rằng trong ví dụ về các đối tượng hàm square cube và square2 chưa sử dụng kỹ thuật khuôn hình. Để có thể tính bình phương của một số kiểu bất kì phải viết lại đối tượng square thành khuôn hình lớp template class T class square public T operator T n return n n Khi đó có thể dùng hàm print Eval để in ra bỉnh phương của một số kiểu bất kì. printEval 4 square int In ra 16 square float ị In ra Tuy nhiên khi sử dụng kỹ thuật khuôn hình để viết lại hàm square2 ta không có được kết quả tương tự. template cclass T . T square2 T n ị return n n I Giả sử trong chương trình có sử dụng hàm này như đối số cho hàm printEval printEval 4 square2 int Sai Cách viết trên không hợp lệ trong C vi không thể khởi tạo một khuôn hình hàm theo cách này. Khi thử viết và biên dịch hàm square2 tùy theo trình biên dịch có thể sẽ nhận được thông báo lỗi biên dịch hoặc thông báo lỗi liên kết. Giải pháp đủng đắn duy nhất trong trường hợp này là sử dụng đối tượng hàm. STL - LẬP TRÌNH KHÁI LUỢC TRONG C 178 Ví dụ trên minh họa cho tính khái lược của đối tượng hàm một điểm mạnh không thể có khi sừ dụng con trỏ hàm. Đỏ cũng là ưư điểm mạnh nhất của đối tượng hàm. Ta sẽ thấy rõ ưu điểm của tính khái lược này khi sử dụng đối tượng hàm trong các khuôn hình giải thuật hoặc trong khởi tạo các bộ chứa. Ngoài ra sử dụng đối tượng hàm còn có các ỉợi thế khác khi so sánh với con trỏ hàm Tinh linh hoạt Đối tượng hàm có thể được sửa đổi mà không gây ảnh hưởng tới việc sử dụng chúng. Tính inline Trình biên dịch có thể sinh code dạng inline cho các đối tượng hàm trong lúc đang biên dịch. Tinh đóng gói dữ .

TÀI LIỆU XEM NHIỀU
TÀI LIỆU MỚI ĐĂNG