Latest web development tutorials

C ++ operatore di chiamata della funzione () sovraccarico

C ++ overloading di funzioni e l'overloading degli operatori C ++ overloading di funzioni e l'overloading degli operatori

L'operatore di chiamata della funzione () può provocare un sovraccarico per gli oggetti di classe. Quando il carico pesante (), non si sta creando un nuovo modo di chiamare una funzione, al contrario, è possibile creare un numero arbitrario funzione di operatore di trasferimento dei parametri.

L'esempio seguente dimostra come sovraccarico operatore di chiamata della funzione ().

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

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

C ++ overloading di funzioni e l'overloading degli operatori C ++ overloading di funzioni e l'overloading degli operatori