Qual è il significato del termine "funzione libera" in C ++?


95

Durante la lettura della documentazione per boost :: test, mi sono imbattuto nel termine "funzione libera". Quello che capisco è che una funzione libera è qualsiasi funzione che non restituisce nulla (il suo tipo di ritorno è nullo). Ma dopo aver letto ulteriormente sembra che anche le funzioni libere non accettano argomenti. Ma non sono sicuro. Queste sono tutte le mie supposizioni. Quindi qualcuno potrebbe definire la funzione libera?

Risposte:


114

Il termine funzione libera in C ++ si riferisce semplicemente a funzioni non membri. Ogni funzione che non è una funzione membro è una funzione gratuita.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function

diciamo che abbiamo la nostra funzione principale in un file diverso e al suo interno dobbiamo chiamare una funzione libera, quindi cosa dovrei fare per avere funzioni libere in qualche altro file che includerò in seguito nel mio file principale ?? Voglio dire, dovrei creare un file hpp in cui sono implementate le mie funzioni gratuite (forse come funzioni inline statiche)?
Gioia

4
Di solito li dichiareresti in un file di intestazione e li implementeresti in un file sorgente separato (con alcune eccezioni come le funzioni del modello). Tuttavia, sarebbe meglio aprire una nuova domanda su quell'argomento specifico in modo che le persone possano risponderti con maggiori dettagli, ecc.
Georg Fritzsche
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.