Was bedeutet der Begriff "freie Funktion" in C ++?

94

Beim Lesen der Dokumentation zu boost :: test bin ich auf den Begriff "freie Funktion" gestoßen. Was ich verstehe ist, dass eine freie Funktion jede Funktion ist, die nichts zurückgibt (ihr Rückgabetyp ist ungültig). Aber nach weiterem Lesen scheinen freie Funktionen auch keine Argumente zu akzeptieren. Aber ich bin mir nicht sicher. Dies alles sind meine Annahmen. Könnte also jemand freie Funktion definieren?

Jame
quelle

Antworten:

113

Der Begriff freie Funktion in C ++ bezieht sich einfach auf Nichtmitgliedsfunktionen. Jede Funktion, die keine Mitgliedsfunktion ist, ist eine freie Funktion.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function
Georg Fritzsche
quelle
Nehmen wir an, wir haben unsere Hauptfunktion in einer anderen Datei und darin müssen wir eine freie Funktion aufrufen. Was soll ich also tun, um freie Funktionen in einer anderen Datei zu haben, die ich später in meine Hauptdatei aufnehmen werde? Ich meine, sollte ich eine HPP-Datei erstellen, in der meine freie Funktion dort implementiert ist (vielleicht als statische Inline-Funktionen)?
Freude
4
Normalerweise deklarieren Sie sie in einer Header-Datei und implementieren sie in einer separaten Quelldatei (mit einigen Ausnahmen wie Vorlagenfunktionen). Es wäre jedoch besser, eine neue Frage zu diesem speziellen Thema zu eröffnen, damit die Leute Ihnen detaillierter antworten können usw.
Georg Fritzsche