📜  C++中函数调用运算符的重载

📅  最后修改于: 2021-05-30 08:50:44             🧑  作者: Mango

在本文中,我们将讨论C++中函数调用运算符的重载。

  • 函数调用运算符由“()”表示,用于调用函数并传递参数。它被称为函数对象的类的实例重载。
  • 当函数调用运算符重载时,将创建一个运算符函数,该函数可用于传递参数。
  • 它修改了对象如何获取运算符。
  • 在面向对象语言中,可以将运算符()视为普通运算符,并且类类型的对象可以调用函数(命名为运算符 () ),就像对任何其他重载运算符进行函数调用一样。
  • 当函数调用运算符被重载,一种新的方式来调用函数不创建而创建的运算符()函数可传递的参数的任意数量。

程序:

下面是首先使用朋友函数来过载插入运算符和抽出运算符采取输入在一个矩阵,然后重载运算符()用于取输入为第ij矩阵的和显示值在i程序j存储在所述矩阵

C++
// C++ program to illustrate the
// above concepts
#include 
#include 
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;
}


输出:

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”