Quelle est la signification du terme «fonction libre» en C ++?

95

En lisant la documentation de boost :: test, je suis tombé sur le terme «fonction libre». Ce que je comprends, c'est qu'une fonction libre est une fonction qui ne renvoie rien (son type de retour est void). Mais après avoir lu plus loin, il semble que les fonctions libres ne prennent pas non plus d'arguments. Mais je ne suis pas sûr. Ce sont toutes mes hypothèses. Quelqu'un pourrait-il donc définir la fonction libre?

Jame
la source

Réponses:

114

Le terme fonction libre en C ++ fait simplement référence aux fonctions non membres. Chaque fonction qui n'est pas une fonction membre est une fonction libre.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function
Georg Fritzsche
la source
disons que nous avons notre fonction principale dans un fichier différent et que nous devons appeler une fonction libre à l'intérieur, alors que dois-je faire pour avoir des fonctions gratuites dans un autre fichier que je l'inclure plus tard dans mon fichier principal ?? Je veux dire, devrais-je créer un fichier hpp où ma fonction gratuite y est implémentée (comme des fonctions statiques en ligne peut-être)?
Joy
4
Habituellement, vous les déclarez dans un fichier d'en-tête et les implémentez dans un fichier source distinct (à quelques exceptions près comme les fonctions de modèle). Il serait préférable d'ouvrir une nouvelle question sur ce sujet spécifique afin que les gens puissent vous répondre avec plus de détails, etc.
Georg Fritzsche