在阅读boost :: test的文档时,我遇到了“自由函数”这个术语。我理解的是,自由函数是任何不返回任何函数的函数(它的返回类型为void)。但在进一步阅读后,似乎自由函数也没有任何论据。但我不确定。这些都是我的假设。任何人都可以定义自由功能吗?
答案 0 :(得分:93)
C ++中的术语自由函数只是指非成员函数。每个不是成员函数的函数都是自由函数。
struct X {
void f() {} // not a free function
};
void g() {} // free function
int h(int, int) { return 1; } // also a free function
答案 1 :(得分:-1)
让我展示一个非常简单的免费功能用法。
#include <iostream>
using namespace std;
template <typename T>
T Area ( T length, T breadth)
{
cout<<length*breadth<<endl;
return length*breadth;
}
区域功能是模板功能。这与任何类都不相关,因此可以称为自由函数。
class Square {
private:
int length; // Length of a Square
int breadth; // Breadth of a Square
public:
Square(int l, int b): length(l), breadth(b){};
int CalculateArea ()
{
return Area(length,breadth);
}
};
类 Square 具有方法 CalculateArea (),该方法调用自由函数 Area
class Rectangle {
private:
double length; // Length of a Rectangle
double breadth; // Breadth of a Rectangle
public:
Rectangle (double l, double b): length(l), breadth(b){};
double CalculateArea ()
{
return Area(length,breadth);
}
};
类矩形与平方相似,只是 length 和 breadth 的数据类型不同。
int main() {
Square s(2,2);
Rectangle r(2.2,2.0);
s.CalculateArea();
r.CalculateArea();
return 0;
}
输出:
4
4.4
“面积”功能对于“正方形”和“矩形”都是通用的。无需使用朋友和成员函数,就可以借助自由函数来计算面积。