Hàm nội tuyến trong C ++ là một khái niệm mạnh mẽ thường được sử dụng với các lớp. Nếu một hàm nằm trong dòng, trình biên dịch sẽ đặt một bản sao mã của hàm đó tại mỗi điểm mà hàm được gọi tại thời điểm biên dịch.
Bất kỳ thay đổi nào đối với một hàm nội tuyến có thể yêu cầu tất cả các ứng dụng khách của hàm phải được biên dịch lại vì trình biên dịch sẽ cần phải thay thế tất cả mã một lần nữa nếu không nó sẽ tiếp tục với chức năng cũ.
Để nội dòng một hàm, hãy đặt từ khóa nội dòng trước tên hàm và xác định hàm trước khi thực hiện bất kỳ lệnh gọi nào đến hàm. Trình biên dịch có thể bỏ qua bộ định lượng nội tuyến trong trường hợp hàm được xác định nhiều hơn một dòng.
Định nghĩa hàm trong định nghĩa lớp là định nghĩa hàm nội tuyến, ngay cả khi không sử dụng công cụ chỉ định nội tuyến.
Sau đây là một ví dụ, sử dụng hàm nội tuyến để trả về giá trị tối đa của hai số -
Ví dụ
#include <iostream> using namespace std; inline int Max(int x, int y) { return (x > y)? x : y; } // Main function for the program int main() { cout << "Max (20,10): " << Max(20,10) << endl; cout << "Max (0,200): " << Max(0,200) << endl; cout << "Max (100,1010): " << Max(100,1010) << endl; return 0; }
Đầu ra
Max (20,10): 20 Max (0,200): 200 Max (100,1010): 1010
Bây giờ chúng ta hãy xem, lợi ích của việc sử dụng các hàm nội tuyến trong mã của chúng ta là gì -
-
Ở đây chi phí cuộc gọi hàm không xảy ra.
-
Nó tiết kiệm chi phí của các biến push và pop trên ngăn xếp, khi hàm được gọi.
-
Nó tiết kiệm chi phí của cuộc gọi trả về từ một hàm.
-
Khi một hàm nội tuyến được tạo, trình biên dịch có thể thực hiện tối ưu hóa theo ngữ cảnh cụ thể trên phần thân của hàm. Loại tối ưu hóa này không được thực hiện cho các chức năng bình thường.
-
Việc sử dụng các hàm nội tuyến nhỏ có thể hữu ích cho các hệ thống nhúng, vì nội tuyến có thể mang lại ít mã hơn so với phần mở đầu và trả về của cuộc gọi hàm.