En este artículo, discutiremos la sobrecarga de los operadores de llamadas a funciones en C++ .
- El operador de llamada de función se denota con «()» , que se utiliza para llamar a la función y pasar parámetros. Está sobrecargado por la instancia de la clase conocida como objeto de función .
- Cuando el operador de llamada de función está sobrecargado, se crea una función de operador que se puede usar para pasar parámetros.
- Modifica la forma en que el objeto obtiene el operador.
- En los lenguajes orientados a objetos , operator() puede tratarse como un operador normal, y los objetos de un tipo de clase pueden llamar a una función ( operador llamado() ) como si hiciera una llamada de función a cualquier otro operador sobrecargado.
- Cuando el operador de llamada de función está sobrecargado, no se crea una nueva forma de llamar a una función, sino que se crea una función operator() a la que se puede pasar un número arbitrario de parámetros.
Programa:
A continuación se muestra el programa para tomar entradas en una array usando funciones amigas primero para sobrecargar el operador de inserción y el operador de extracción y luego sobrecargar al operador() para tomar entradas para la i -ésima fila y la j -ésima columna de la array y mostrar el valor en la i -ésima fila y la j -ésima columna almacenada en la array:
C++
// C++ program to illustrate the // above concepts #include <bits/stdc++.h> #include <iostream> using namespace std; #define N 3 #define M 3 // Matrix Class class Matrix { private: int arr[N][M]; public: // Overloading of input stream friend istream& operator>>( istream&, Matrix&); // Overloading of output stream friend ostream& operator<<( ostream&, Matrix&); int& operator()(int, int); }; // Function to overload the input // ">>" operator istream& operator>>(istream& cin, Matrix& m) { int x; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { // Overloading operator() // to take input cin >> m(i, j); } } return cin; } // Function to overload the output // "<<" operator ostream& operator<<(ostream& cout, Matrix& m) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { // Overloading operator() to // take input m.operator()(i, j); cout << m(i, j) << " "; } cout << endl; } return cout; } // Function to call the operator // function to overload the operators int& Matrix::operator()(int i, int j) { return arr[i][j]; } // Driver Code int main() { Matrix m; printf("Input the matrix:\n"); // Compiler calls operator >> and // passes object cin and object m // as parameter operator>>(cin, m); cin >> m; printf("The matrix is:\n"); // Compiler calls operator << and // passes object cout and object m // as parameter operator<<(cin, m); cout << m; return 0; }
Publicación traducida automáticamente
Artículo escrito por kingluffy17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA