Function Call Operator() Overloading in C++

Posted in /  

Function Call Operator() Overloading in C++

Vinay Khatri
Last updated on August 5, 2022

    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:

    Leave a Comment on this Post

    0 Comments