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. }

当上面的代码被编译和执行时,它会产生下列结果:

  1. First Distance : F: 11 I:10
  2. Second Distance :F: 30 I:120