C++学习记录:函数对象

如果一个类重载了调用运算符(),则我们能像使用函数一样使用这个类的对象。我们将类的对象称为函数对象。因为可以调用该对象,该类对象的行为“如同函数一样”。

b站黑马C++视频教学将该知识放在了容器部分,实际上调用运算符的重载应该在运算符重载部分讲解,是属于面向对象编程的内容。

代码示例(来源于《C++ Primer》)

下面的代码定义了absInt类的结构体,含有一个调用运算符,该调用运算符负责返回其参数val的绝对值。

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

该类只定义了一种操作,即函数调用运算符,它接受一个int类的实参,返回该实参绝对值(返回值也是int类型)。接下来我们调用absInt作用一个实参列表。

//五四青年节快乐
int i = 19190504;
absInt absObj;
//乍一看是不是很像函数的调用?实际上absObj是类型absInt的一个对象
int ui = absObj(i);

函数对象的应用待续

lambda是函数对象

使用标准库定义的函数对象

在算法中使用标准库定义的函数对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值