Latest web development tutorials

C ++ оператор вызова функции () перегрузки

C ++ перегрузка функций и перегрузка операторов C ++ перегрузка функций и перегрузка операторов

Оператор вызова функции () может быть перегружена для объектов класса. Когда тяжелый груз (), вы не создаете новый способ вызова функции, наоборот, можно создать операторную функцию переноса произвольное число параметров.

В следующем примере показано, как перегруженный оператор вызова функции ().

#include <iostream>
using namespace std;
 
class Distance
{
   private:
      int feet;             // 0 到无穷
      int inches;           // 0 到 12
   public:
      // 所需的构造函数
      Distance(){
         feet = 0;
         inches = 0;
      }
      Distance(int f, int i){
         feet = f;
         inches = i;
      }
      // 重载函数调用运算符
      Distance operator()(int a, int b, int c)
      {
         Distance D;
         // 进行随机计算
         D.feet = a + c + 10;
         D.inches = b + c + 100 ;
         return D;
      }
      // 显示距离的方法
      void displayDistance()
      {
         cout << "F: " << feet <<  " I:" <<  inches << endl;
      }
      
};
int main()
{
   Distance D1(11, 10), D2;

   cout << "First Distance : "; 
   D1.displayDistance();

   D2 = D1(10, 10, 10); // invoke operator()
   cout << "Second Distance :"; 
   D2.displayDistance();

   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

First Distance : F: 11 I:10
Second Distance :F: 30 I:120

C ++ перегрузка функций и перегрузка операторов C ++ перегрузка функций и перегрузка операторов