112 votes

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

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 retourne 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 peut-il définir une fonction libre ?

139voto

Georg Fritzsche Points 59185

Le terme fonction libre en C++ fait simplement référence aux fonctions non membres. Toute 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

0 votes

Disons que nous avons notre fonction principale dans un fichier différent et qu'à l'intérieur de celle-ci nous devons appeler une fonction libre, alors que dois-je faire pour avoir des fonctions libres dans un autre fichier que je vais inclure plus tard dans mon fichier principal ? Je veux dire que je dois créer un fichier hpp dans lequel mes fonctions libres sont implémentées (comme des fonctions statiques en ligne peut-être) ?

5 votes

En général, vous les déclarez dans un fichier d'en-tête et les implémentez dans un fichier source séparé (avec quelques exceptions 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X