Що означає термін "вільна функція" в C ++?


95

Читаючи документацію для boost :: test, я натрапив на термін "безкоштовна функція". Я розумію, що безкоштовна функція - це будь-яка функція, яка нічого не повертає (її тип повернення недійсний). Але після подальшого прочитання здається, що безкоштовні функції також не беруть аргументів. Але я не впевнений. Це все мої припущення. То може хтось визначити безкоштовну функцію?

Відповіді:


114

Термін вільна функція в C ++ просто позначає функції, що не є членами. Кожна функція, яка не є функцією-членом, є вільною функцією.

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

припустимо, у нас є основна функція в іншому файлі, і всередині неї нам потрібно викликати безкоштовну функцію, так що я повинен робити, щоб мати вільні функції в якомусь іншому файлі, що я буду включати її пізніше до свого основного файлу ?? Я маю на увазі, чи слід робити файл hpp, де там реалізована моя безкоштовна функція (як статичні вбудовані функції)?
Радість

4
Зазвичай ви оголошуєте їх у файлі заголовка та реалізуєте в окремому вихідному файлі (за деякими винятками, такими як функції шаблону). Було б краще відкрити нове запитання на цю конкретну тему, хоча люди зможуть відповісти вам більш детально і т. Д.
Георг Фріцче,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.