2011-02-01 22 views
66

Al leer la documentación de boost :: test, me encontré con el término "función gratuita". Lo que entiendo es que una función libre es cualquier función que no devuelve nada (su tipo de devolución es nulo). Pero después de leer más, parece que las funciones gratuitas tampoco toman ningún argumento. Pero no estoy seguro. Todos estos son mis suposiciones. Entonces, ¿podría alguien definir la función libre?¿Cuál es el significado del término "función libre" en C++?

Respuesta

76

El término función gratuita en C++ se refiere simplemente a funciones que no son miembros. Cada función que no es una función miembro es una función gratuita.

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

digamos que tenemos nuestra función principal en un archivo diferente y en su interior hay que llamar a una función gratuita, así que lo que hay que hacer para tener funciones gratuitas en algún otro archivo que voy a incluir más tarde en mi principal archivo ?? Quiero decir, ¿debería hacer un archivo hpp donde mi función gratuita se implementa allí (como funciones estáticas en línea tal vez)? – Glolita

+3

Por lo general, los declararía en un archivo de cabecera y los implementaría en un archivo fuente separado (con algunas excepciones, como funciones de plantilla). Sin embargo, sería mejor abrir una nueva pregunta sobre ese tema específico para que las personas puedan responderle con más detalles, etc. –

Cuestiones relacionadas