Ý nghĩa của thuật ngữ “hàm miễn phí” trong C ++ là gì?


95

Trong khi đọc tài liệu về boost :: test, tôi đã bắt gặp thuật ngữ "chức năng miễn phí". Những gì tôi hiểu là một hàm miễn phí là bất kỳ hàm nào không trả về bất kỳ thứ gì (Kiểu trả về của nó là void). Nhưng sau khi đọc thêm, có vẻ như các hàm miễn phí cũng không nhận bất kỳ đối số nào. Nhưng tôi không chắc. Tất cả đều là giả định của tôi. Vì vậy, bất cứ ai có thể xác định chức năng miễn phí?

Câu trả lời:


114

Thuật ngữ hàm tự do trong C ++ chỉ đơn giản đề cập đến các hàm không phải là thành viên. Mọi chức năng không phải là chức năng thành viên đều là chức năng miễn phí.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function

giả sử chúng ta có hàm chính trong một tệp khác và bên trong nó, chúng ta cần gọi một hàm miễn phí, vậy tôi phải làm gì để có các hàm miễn phí trong một số tệp khác mà sau này tôi sẽ đưa nó vào tệp chính của mình ?? Ý tôi là tôi có nên tạo một tệp hpp trong đó chức năng miễn phí của tôi được triển khai ở đó (có thể là các hàm nội tuyến tĩnh) không?
Joy

4
Thông thường, bạn sẽ khai báo chúng trong một tệp tiêu đề và triển khai chúng trong một tệp nguồn riêng biệt (với một số ngoại lệ như các hàm mẫu). Sẽ tốt hơn để mở một câu hỏi mới về mà cụ chủ đề mặc dù vậy mọi người có thể trả lời cho bạn biết thêm chi tiết, vv
Georg Fritzsche
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.