English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Sobrecarga do operador de chamada de função ()

C++ Sobrecarga de Operador e Função Sobrecarregada

O operador de chamada de função () pode ser sobrecarregado para objetos de classe. Quando sobrecarregar (), você não cria um novo método de chamada de função, em vez disso, cria um operador de função que pode passar qualquer número de argumentos.

O exemplo a seguir demonstra como sobrecarregar o operador de chamada de função ()。

#include <iostream>
using namespace std;
 
class Distance
{
   private:
      int feet;             // 0 até infinito
      int inches;           // 0 até 12
   public:
      // Construtores necessários
      Distance(){
         feet = 0;
         inches = 0;
      }
      Distance(int f, int i){
         feet = f;
         inches = i;
      }
      // Sobrecarga do operador de chamada de função
      Distance operator()(int a, int b, int c)
      {
         Distance D;
         // Realizar cálculos aleatórios
         D.feet = a + c + 10;
         D.inches = b + c + 100;
         return D;
      }
      // Método de exibição de distância
      void displayDistance()
      {
         cout << "F: " << feet << " I:" << inches << endl;
      }
      
};
int main()
{
   Distância D1(11, 10), D2;
   cout << "Primeira Distância : "; 
   D1.displayDistance();
   D2 = D1(10, 10, 10); // invoke operator()
   cout << "Segunda Distância :"; 
   D2.displayDistance();
   return 0;
}

Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:

Primeira Distância : F: 11 I:10
Segunda Distância :F: 30 I:120

C++ Sobrecarga de Operador e Função Sobrecarregada