#include<iostream>
#include<string>
//函数调用运算符重载
using namespace std;
class Myprint
{
public:
void operator() (string test)
{
cout << test << endl;
}
};
class MyAdd
{
public:
int operator()(int num1, int num2)
{
return num1 + num2;
}
};
void test()
{
Myprint Print;
Print("Hello World!");//用起来和函数类似,因此叫仿函数
}
void test2()
{
MyAdd add;
cout<<add(10,20)<<endl;
//匿名函数对象
cout << MyAdd()(10, 20) << endl;//和上面的功能相同的
//首先创建一个匿名对象,匿名对象的特点:执行完后就立即释放。执行完函数之后就马上释放掉了。
}
int main()
{
test();
test2();
system("pause");
return 0;
}
重点:匿名函数对象。创建一个对象目的是为了执行函数的运行,当函数运行完之后就立即释放掉这个对象,上面的“Hello World”是先创建了一新的对象然后再调用函数下面这个没有创建实际的对象所以叫匿名对象。