Latest web development tutorials

C ++ operator wywołania funkcji () przeciążania

Funkcja C ++ przeciążenie i przeciążanie operatorów Funkcja C ++ przeciążenie i przeciążanie operatorów

Operator wywołania funkcji () może być przeciążony dla obiektów klasy. Gdy ciężkie obciążenia (), nie tworzą nowy sposób wywoływania funkcji, wręcz przeciwnie, jest to możliwe, aby utworzyć funkcję operatora przekazanie dowolnej liczby parametrów.

Poniższy przykład pokazuje, jak przeciążony operator wywołania funkcji ().

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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

Funkcja C ++ przeciążenie i przeciążanie operatorów Funkcja C ++ przeciążenie i przeciążanie operatorów