Xem thêm

Tính năng Hàm Inline trong ngôn ngữ lập trình C++

Huy Erick
Các bạn đã biết về tính năng hàm inline trong ngôn ngữ lập trình C++ chưa? Hôm nay, chúng ta sẽ cùng tìm hiểu về tính năng này và tại sao nó lại được sử...

Các bạn đã biết về tính năng hàm inline trong ngôn ngữ lập trình c ++ chưa? Hôm nay, chúng ta sẽ cùng tìm hiểu về tính năng này và tại sao nó lại được sử dụng phổ biến.

Định nghĩa

Hàm inline là một chức năng trong ngôn ngữ lập trình C++. Hàm inline được định nghĩa bằng từ khóa "inline". Nó được sử dụng để yêu cầu trình biên dịch thay thế lời gọi hàm bằng toàn bộ mã code của hàm. Mục đích của việc này là giảm thời gian chạy chương trình.

Quá trình biên dịch một chương trình:

INLINE FUNCTION Hình 1: Quá trình biên dịch một chương trình

Hàm inline sẽ được trình biên dịch thực hiện thay thế vị trí gọi hàm bằng nội dung hàm inline.

Cách sử dụng

Để định nghĩa một hàm inline, ta đặt từ khóa "inline" ở phần đầu tiên của hàm. Cú pháp như sau:

inline return_type function_name(param){     // nội dung hàm }

Ví dụ:

#include  using namespace std;  inline void hello(){     cout << "Xin chao!"; }  int main() {     hello();     cin.get(); }

Hàm inline được sử dụng khi:

  • Khi cần thời gian thực hiện ngắn và chắc chắn rằng việc sử dụng hàm sẽ mang lại hiệu suất.
  • Các hàm có nội dung rất nhỏ và được gọi rất thường xuyên.
  • Sử dụng hàm inline trong class, nên sử dụng từ khóa inline bên ngoài lớp với định nghĩa hàm.

Class X ví dụ:

class X {    private:       string name;    public:       string getName(); };  inline string X::getName() {    return name; }

Trường hợp không nên sử dụng hàm inline:

  • Hàm lớn, phức tạp.
  • Hàm khởi tạo và hàm hủy.
  • Hàm ảo khi được gọi bằng tham chiếu của lớp cơ sở hoặc con trỏ.

Ngoài ra, cần lưu ý một số điểm khi sử dụng từ khóa "inline":

  • Không sử dụng trong hàm chứa vòng lặp, hàm chứa các biến tĩnh, hàm đệ quy, hàm chứa lệnh switch hoặc go to, và kiểu trả về của hàm khác void mà không có lệnh return.

Ưu nhược điểm

Ưu điểm:

  • Không yêu cầu chức năng gọi overhead.
  • Tiết kiệm chi phí gọi hàm và thực hiện chương trình nhanh.

Nhược điểm:

  • Tiêu thụ các thanh ghi bổ xung cho việc lưu biến.
  • Tăng kích thước của file nhị phân.
  • Làm giảm tốc độ truy cập từ bộ nhớ đệm tới bộ nhớ chính.
  • Không hữu ích trong các hệ thống yêu cầu về kích thước file.

Nguồn:

1