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?

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.