C++中“自由函数”的含义是什么?

136
在阅读boost::test文档时,我遇到了“自由函数”这个术语。我的理解是,自由函数是不返回任何东西(其返回类型为void)的任何函数。但是在进一步阅读后,似乎自由函数也不接受任何参数。但我不确定,这些都是我的假设。所以,有人能定义一下自由函数吗?
1个回答

171

free function这个术语在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
7
通常情况下,您需要在头文件中声明它们,并在单独的源文件中实现它们(有一些例外,如模板函数)。但最好针对该特定主题提出一个新问题,以便人们可以用更详细的方式回答您。 - Georg Fritzsche

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接