STL函数对象
一、函数对象
- 重载函数操作符的类,称为函数对象
函数
对象使用重载的()
时,行为类似函数调用,也叫做仿函数
本质
函数对象(仿函数)是一个类,不是一个函数。
1.函数对象使用
特点
- 函数对象在使用时,可以像普通函数那样调用,可以
有参数
,可以有返回值
。 - 函数对象超出普通函数的概念,函数对象可以有自己的状态
- 函数对象可以作为参数传递
#include <iostream>
using namespace std;
class MyAdd
{
int addNum = 0;//加了几次
public:
int getNum()
{
return addNum;//可以知道返回数据的类型
}
int operator()(int v1, int v2)
{
addNum++;
return v1 + v2;
}
};
void test1()
{
MyAdd madd;
cout << madd(12, 12) << endl;
}
int main()
{
test1();
system("pause");
}
函数对象作为参数传递
#include <iostream>
#include <string>
using namespace std;
class MyPrint
{
public:
void operator()(const string &mstr,int & i)
{
cout << mstr << ":" << i << endl;
}
};
void doPrint(MyPrint & mp, string test ,int i)
{
mp(test, i);
}
void test1()
{
MyPrint mpt;//仿函数使用之前先声明类
doPrint(mpt,"想你了",19);
}
int main()
{
test1();
system("pause");
}