Apa arti istilah “fungsi bebas” di C ++?

97

Saat membaca dokumentasi untuk boost :: test, saya menemukan istilah "fungsi bebas". Apa yang saya pahami adalah bahwa fungsi bebas adalah fungsi apa pun yang tidak mengembalikan apa pun (Jenis kembaliannya tidak berlaku). Tetapi setelah membaca lebih lanjut, tampaknya fungsi gratis juga tidak membutuhkan argumen apa pun. Tapi saya tidak yakin. Ini semua adalah asumsi saya. Jadi, adakah yang bisa mendefinisikan fungsi bebas?

Jame
sumber

Jawaban:

117

Istilah fungsi bebas di C ++ hanya mengacu pada fungsi non-anggota. Setiap fungsi yang bukan merupakan fungsi anggota adalah fungsi bebas.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function
Georg Fritzsche
sumber
katakanlah kita memiliki fungsi utama di file yang berbeda dan di dalamnya kita perlu memanggil fungsi gratis, jadi apa yang harus saya lakukan untuk memiliki fungsi gratis di beberapa file lain yang akan saya sertakan nanti di file utama saya ?? Maksud saya, haruskah saya membuat file hpp di mana fungsi gratis saya diterapkan di sana (mungkin karena fungsi sebaris statis)?
Joy
5
Biasanya Anda akan mendeklarasikannya dalam file header dan menerapkannya dalam file sumber terpisah (dengan beberapa pengecualian seperti fungsi template). Akan lebih baik untuk membuka pertanyaan baru tentang topik spesifik itu sehingga orang dapat menjawab Anda dengan lebih detail, dll.
Georg Fritzsche