函数对象
1、概念
重载函数调用操作符的类,其对象常称为函数对象
函数对象使用重载的()时,行为类似函数调用,也叫仿函数
2、本质
函数对象(仿函数)是一个类,不是一个函数
#include <iostream>
using namespace std;
//函数对象
class MyAdd{
public:
int operator()(int a, int b) {
return a + b;
}
};
void test01() {
//1、函数对象可以像函数一样进行调用
MyAdd myAdd;
cout << myAdd(10, 5) << endl;
}
class MyPrint {
public:
MyPrint() { count = 0; }
int count;
void operator()(string s) {
count++;
cout << s << endl;
}
};
void test02() {
//2、可以使用类成员变量来记录函数对象的状态
MyPrint myPrint;
myPrint("hello");
myPrint("hello");
myPrint("hello");
myPrint("hello");
cout << "MyPrint调用次数:" << myPrint.count << endl;
}
void dotest(MyPrint& my, string s) {
my(s);
}
void test03() {
//3、函数对象可以作为参数进行传递
MyPrint myPrint;
dotest(myPrint, "world");
}
int main() {
//test01();
//test02();
test03();
return 0;
}

被折叠的 条评论
为什么被折叠?



