重载运算符 & 产生 int[][] 的总和

Lam*_*amp 1 c++ operator-overloading

这是某家公司的测试。

重载 & 返回 int[][] 的总和

main()
{
    int arr[5][5];
    // initialization
    cout << &arr; // output the sum of arr
}
Run Code Online (Sandbox Code Playgroud)

我尝试此代码但返回编译错误:

long operator &(int** arr)
{
    // return the sum of arr
}
Run Code Online (Sandbox Code Playgroud)

错误:参数应该包含类类型或枚举目前我理解这个错误,但是如何为内置类型重载运算符?

P K*_*mer 6

重载运算符 & 的示例,仅用于教育用途!我不建议在任何严肃的代码中重载 operator&。

#include <iostream>

struct my_array
{
    my_array()
    {
        for (int i = 0; i < 5; ++i)
        {
            for (int j = 0; j < 5; ++j)
            {
                values[i][j] = 1 + i + j;
            }
        }
    }

    int operator&()
    {
        int sum = 0;
        for (int i = 0; i < 5; ++i)
        {
            for (int j = 0; j < 5; ++j)
            {
                sum += values[i][j];
            }
        }

        return sum;
    }

private:
    int values[5][5]{};
};


int main()
{
    my_array m;
    int sum = &m;
    std::cout << sum;
}
Run Code Online (Sandbox Code Playgroud)