关于函数对象和调用操作符

函数对象和调用操作符
可以为类类型的对象重载函数调用操作符。一般为表示操作的类重载调用操
作符。例如,可以定义名为 absInt 的结构,该结构封装将 int 类型的值转换

为绝对值的操作:


struct absInt {
int operator() (int val) {
return val < 0 ? -val : val;
}

};


这个类很简单,它定义了一个操作:函数调用操作符,该操作符有一个形参
并返回形参的绝对值。
通过为类类型的对象提供一个实参表而使用调用操作符,所用的方式看起来
像一个函数调用:
int i = -42;
absInt absObj; // object that defines function call operator
unsigned int ui = absObj(i); // calls absInt::operator(int)
尽管 absObj 是一个对象而不是函数,我们仍然可以“调用”该对象,效果
是运行由 absObj 对象定义的重载调用操作符,该操作符接受一个 int 并值并
返回它的绝对值。
函数调用操作符必须声明为成员函数。一个类可以定义函数调
用操作符的多个版本,由形参的数目或类型加以区别。
定义了调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象。


PS: 转载自<C++ Primer>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值