C++ 函数调用运算符 () 重载
函数调用运算符 () 可以被重载用于类的对象。当重载 () 时,您不是创造了一种新的调用函数的方式,相反地,这是创建一个可以传递任意数目参数的运算符函数。
1 #include <iostream>
2 using namespace std;
3 class Distance
4 {
5 private:
6 int feet; // 0 到无穷
7 int inches; // 0 到 12
8 public:
9 // 所需的构造函数
10 Distance(){
11 feet = 0;
12 inches = 0;
13 }
14 Distance(int f, int i){
15 feet = f;
16 inches = i;
17 }
18 // 重载函数调用运算符
19 Distance operator()(int a, int b, int c)
20 {
21 Distance D;
22 // 进行随机计算
23 D.feet = a + c + 10;
24 D.inches = b + c + 100 ;
25 return D;
26 }
27 // 显示距离的方法
28 void displayDistance()
29 {
30 cout << "F: " << feet << " I:" << inches << endl;
31 }
32 };
33 int main()
34 {
35 Distance D1(11, 10), D2;
36
37 cout << "First Distance : ";
38 D1.displayDistance();
39
40 D2 = D1(10, 10, 10); // invoke operator()
41 cout << "Second Distance :";
42 D2.displayDistance();
43
44 return 0;
45 }
结果
First Distance : F: 11 I:10 Second Distance :F: 30 I:120