Latest web development tutorials

opérateur d'appel de fonction de C () surcharge

C ++ surcharge de la fonction et la surcharge des opérateurs C ++ surcharge de la fonction et la surcharge des opérateurs

L'opérateur d'appel de fonction () peut être surchargé pour les objets de classe. Lorsque la charge lourde (), vous ne créez pas une nouvelle façon d'appeler une fonction, au contraire, il est possible de créer une fonction d'opérateur de transfert nombre arbitraire de paramètres.

L'exemple suivant montre comment surchargé l'opérateur d'appel de fonction ().

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

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

C ++ surcharge de la fonction et la surcharge des opérateurs C ++ surcharge de la fonction et la surcharge des opérateurs