ความหมายของคำว่า "ฟังก์ชันอิสระ" ใน C ++ คืออะไร?


97

ในขณะที่อ่านเอกสารสำหรับการทดสอบ boost :: ฉันพบคำว่า "ฟังก์ชันฟรี" สิ่งที่ฉันเข้าใจคือฟังก์ชันฟรีคือฟังก์ชันใด ๆ ที่ไม่คืนค่าอะไรเลย (ประเภทการส่งคืนเป็นโมฆะ) แต่หลังจากอ่านเพิ่มเติมดูเหมือนว่าฟังก์ชันฟรีก็ไม่ได้ใช้ข้อโต้แย้งใด ๆ แต่ผมไม่แน่ใจ ทั้งหมดนี้เป็นสมมติฐานของฉัน มีใครกำหนดฟังก์ชันฟรีได้ไหม

คำตอบ:


117

คำว่าฟังก์ชันฟรีใน C ++ หมายถึงฟังก์ชันที่ไม่ใช่สมาชิก ทุกฟังก์ชันที่ไม่ใช่ฟังก์ชันสมาชิกเป็นฟังก์ชันฟรี

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

สมมติว่าเรามีฟังก์ชั่นหลักของเราในไฟล์อื่นและภายในนั้นเราจำเป็นต้องเรียกใช้ฟังก์ชันฟรีดังนั้นฉันควรทำอย่างไรเพื่อให้มีฟังก์ชันฟรีในไฟล์อื่นที่ฉันจะรวมไว้ในไฟล์หลักในภายหลัง ?? ฉันหมายถึงฉันควรสร้างไฟล์ hpp ที่มีการนำฟังก์ชันฟรีของฉันไปใช้ที่นั่น (อาจเป็นฟังก์ชันอินไลน์แบบคงที่)
Joy

5
โดยปกติคุณจะประกาศไว้ในไฟล์ส่วนหัวและนำไปใช้ในไฟล์ซอร์สแยกต่างหาก (โดยมีข้อยกเว้นบางประการเช่นฟังก์ชันเทมเพลต) จะเป็นการดีกว่าหากเปิดคำถามใหม่ในหัวข้อนั้น ๆ เพื่อให้ผู้คนสามารถตอบคุณด้วยรายละเอียดเพิ่มเติมเป็นต้น
Georg Fritzsche
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.