Qual é o significado do termo “função livre” em C ++?

95

Ao ler a documentação de boost :: test, me deparei com o termo "função livre". O que eu entendo é que uma função livre é qualquer função que não retorna nada (seu tipo de retorno é nulo). Mas depois de ler mais, parece que as funções livres também não aceitam argumentos. Mas eu não tenho certeza. Todas essas são minhas suposições. Então, alguém poderia definir a função livre?

Jame
fonte

Respostas:

114

O termo função livre em C ++ simplesmente se refere a funções não membros. Cada função que não é uma função-membro é uma função livre.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function
Georg Fritzsche
fonte
digamos que temos nossa função principal em um arquivo diferente e dentro dele precisamos chamar uma função livre, então o que devo fazer para ter funções livres em algum outro arquivo que irei incluir depois em meu arquivo principal ?? Quer dizer, devo fazer um arquivo hpp onde minhas funções gratuitas são implementadas lá (como funções embutidas estáticas, talvez)?
Joy
4
Normalmente, você os declararia em um arquivo de cabeçalho e os implementaria em um arquivo de origem separado (com algumas exceções, como funções de modelo). Seria melhor abrir uma nova pergunta sobre aquele tópico específico para que as pessoas possam responder com mais detalhes etc.
Georg Fritzsche