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 }

 

posted @ 2020-04-11 10:31  坦率  阅读(360)  评论(0编辑  收藏  举报