C++/函数调用运算符重载(6)
1.函数调用运算符()也可以重载
2.由于重载之后使用的方式很像函数的调用,因此称为仿函数
3.仿函数没有固定写法,非常灵活
情景:后面STL中大量用到!
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 //打印输出类 6 class MyPrint 7 { 8 public: 9 10 //重载函数调用运算符 11 void operator()(string test) 12 { 13 cout << test << endl; 14 } 15 16 }; 17 18 void MyPrint02(string test) 19 { 20 cout << test << endl; 21 } 22 23 void test_01(void) 24 { 25 MyPrint myPrint; 26 myPrint("Hello,world!"); //重载函数调用运算符 27 28 MyPrint02("Hello,world!"); //直接调用函数 29 } 30 31 //仿函数非常灵活,没有固定的写法 32 //加法类 33 class MyAdd 34 { 35 public: 36 int operator()(int num1, int num2) //可以有返回值 37 { 38 return num1 + num2; 39 } 40 }; 41 42 void test_02(void) 43 { 44 MyAdd myadd; 45 int ret = myadd(100,100); 46 47 cout << "ret="<< ret << endl; 48 49 //匿名对象:类名+() 50 cout <<MyAdd()(100,200)<< endl; 51 } 52 53 int main(void) 54 { 55 //test_01(); 56 test_02(); 57 58 system("pause"); 59 return 0; 60 }