重载函数调用操作符

函数调用操作符?

        函数调用操作符是(),因此此操作符的函数重载是operator()()。重载函数调用操作符的类对象称为函数对象或仿函数,因此我们可以像使用函数名一样使用对象名。先看一个简单的例子。重载了函数调用操作符的一个类:

class Area
{
public:
	int operator()(int length, int width)
	{
		return length*width;
	}
};
上面的类中,操作符函数计算一个面积,它是两个整数实参的乘积。为了使用此操作符函数,只需要创建一个类型为Area的对象,例如:

Area area;
cout<<area(5,9)<<endl;
        也可以将一个函数对象传递给另一个函数,就像传递其它对象一样,看看下面这个函数:

void printArea(int length, int width, Area& area)
{
	cout<<"Area is :"<<area(length, width);
}
//调用方法 
Area area;
printArea(7,8, area);
printArea(7,8, Area());
这样,提供了另外一种方法可以将函数作为实参传递给另外一个函数。与使用函数指针相比,这种方法即简单又容易。定义函数对象的类一般不需要数据成员,也没有构造函数。因此创建和使用函数对象的开销是最小的。函数对象类通常也定义我模板,因为这会增加灵活性。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值