Using the concept of Operator Overloading we can overload the function call operator () , and when we say we can overload the function call operator () we do not mean we can redefine a new way to call a function, rather in function call operator overloading we redefine the parameters accepted by the function and after function call operator overloading we can pass an arbitrary number of parameters in a class member function. Example
#include <iostream>
using namespace std;
class Displacement {
private:
int meters;
public:
// required constructors
Displacement()
{
meters = 0;
}
Displacement(int m)
{
meters=m;
}
// overload function call
Displacement operator()(int a, int b, int c)
{
Displacement D;
D.meters = a+b+c;
return D;
}
// it show the displacement
void show_displacement()
{
cout << meters << " Meters " << endl;
}
};
int main() {
Displacement D1(100), D2;
cout << "D1 Displacement : ";
D1.show_displacement();
D2 = D1(200, 200, 200); // invoke operator() overloading method
cout << "D2 Displacement:";
D2.show_displacement();
return 0;
}
Output D1 Displacement: 100 Meters D2 Displacement: 600 Meters
Conclusion
So, this was all about function call operator() overloading in C++. When you overload the function call operator(), it does not mean that you create another way to call a function. Instead, you create an operator function that can accept an arbitrary number of parameters. We hope the example mentioned in this tutorial helped you develop a better understanding of how function call operator() overloading works in C++. Also, if you have any queries or suggestions, feel free to share them in the comments section below. People are also reading: