English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ Operator Overloading and Overloaded Functions
The function call operator () can be overloaded for an object of the class. When overloading (), you are not creating a new way to call a function, instead, this is creating an operator function that can pass an arbitrary number of arguments.
The following example demonstrates how to overload the function call operator ().
#include <iostream> using namespace std; class Distance { private: int feet; // 0 to infinity int inches; // 0 to 12 public: // Required constructor Distance(){ feet = 0; inches = 0; } Distance(int f, int i){ feet = f; inches = i; } // Overload function call operator Distance operator()(int a, int b, int c) { Distance D; // Perform 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; }
When the above code is compiled and executed, it will produce the following results:
First Distance : 11 I:10 Second Distance : F: 30 I:120