仿函数
/**-----------------------------------仿函数---------------------------------------------*/
#include<iostream>
using namespace std;
class MyClass
{
public:
//-------普通成员函数定义
int my_add(int x, int y) {
return x + y;
}
//-------仿函数定义
int operator()(int x, int y) { //第一( )是重载的符号;第二( )是标明要进行传参;
return x + y;
}
private:
};
void test01()
{
MyClass dx;
//普通函数调用用法---------------------------------
cout << dx.my_add(20,95) << endl; //输出1
//operator()直接看成是一个函数名 -- 仿函数用法
cout << dx.operator()(85, 96) << endl; //输出2
//operator()重载和仿函数用法-----------------------
//优化:对象dx直接和( )结合,就会自动寻找( )运算符,当前前提是类中又operator()函数的定义
cout << dx(25, 95) << endl; //输出3
//这里dx是对象名,不是函数,本质是输出2,触发()函数重载
//但是从外形上看起来像是函数,这样的用法叫做“仿函数”
cout << MyClass()(85, 95) << endl;
//直接使用类名竟然也可以————匿名对象,实际上也是对象
//(一次性的,执行一次后就没了)
//记得使用类名——2个括号哈!
}
int main()
{
test01();
return 0;
}