Что означает термин «свободная функция» в C ++?

97

Читая документацию по boost :: test, я натолкнулся на термин «бесплатная функция». Я понимаю, что бесплатная функция - это любая функция, которая ничего не возвращает (ее тип возврата - void). Но после прочтения кажется, что бесплатные функции также не принимают никаких аргументов. Но я не уверен. Это все мои предположения. Так может ли кто-нибудь определить бесплатную функцию?

Джейм
источник

Ответы:

117

Термин « свободная функция» в C ++ просто относится к функциям, не являющимся членами. Каждая функция, не являющаяся функцией-членом, является бесплатной функцией.

struct X {
    void f() {}               // not a free function
};
void g() {}                   // free function
int h(int, int) { return 1; } // also a free function
Георг Фриче
источник
скажем, у нас есть основная функция в другом файле, и внутри него нам нужно вызвать бесплатную функцию, так что мне делать, чтобы бесплатные функции были в каком-то другом файле, который я включу позже в свой основной файл? Я имею в виду, должен ли я создавать файл hpp, в котором реализована моя бесплатная функция (возможно, как статические встроенные функции)?
Joy
5
Обычно вы объявляете их в файле заголовка и реализуете в отдельном исходном файле (за некоторыми исключениями, такими как функции шаблона). Было бы лучше открыть новый вопрос по этой конкретной теме, чтобы люди могли ответить вам более подробно и т. Д.
Георг Фриче