Operador de chamada de função () Sobrecarga em C ++
O operador de chamada de função () pode ser sobrecarregado para objetos do tipo de classe. Quando você sobrecarrega (), não está criando uma nova maneira de chamar uma função. Em vez disso, você está criando uma função de operador que pode receber um número arbitrário de parâmetros.
O exemplo a seguir explica como um operador de chamada de função () pode ser sobrecarregado.
#include <iostream>
using namespace std;
class Distance {
private:
int feet; // 0 to infinite
int inches; // 0 to 12
public:
// required constructors
Distance() {
feet = 0;
inches = 0;
}
Distance(int f, int i) {
feet = f;
inches = i;
}
// overload function call
Distance operator()(int a, int b, int c) {
Distance D;
// just put random calculation
D.feet = a + c + 10;
D.inches = b + c + 100 ;
return D;
}
// method to display distance
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 o código acima é compilado e executado, ele produz o seguinte resultado -
First Distance : F: 11 I:10
Second Distance :F: 30 I:120