Operatore di chiamata di funzione () Sovraccarico in C ++
La chiamata di funzione operator () può essere sovraccaricata per oggetti di tipo classe. Quando sovraccarichi (), non stai creando un nuovo modo per chiamare una funzione. Piuttosto, stai creando una funzione operatore a cui può essere passato un numero arbitrario di parametri.
L'esempio seguente spiega come è possibile sovraccaricare una chiamata di funzione operator ().
#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 il codice precedente viene compilato ed eseguito, produce il seguente risultato:
First Distance : F: 11 I:10
Second Distance :F: 30 I:120