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

C++学习记录:函数对象,第1张

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

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是函数对象

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/867955.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存