c++ - 重载运算符 & 以产生 int[][] 的总和

标签 c++ operator-overloading

这是某公司的测试。

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

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

我尝试了这段代码,但返回了编译错误:

long operator &(int** arr)
{
    // return the sum of arr
}

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

最佳答案

重载运算符 & 的例子,仅供学习使用! 我不建议在任何严肃的代码中重载 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;
}

关于c++ - 重载运算符 & 以产生 int[][] 的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69055746/

相关文章:

c++ - Boost 点 C++ 的初始化

c++ - 通过继承重载运算符会导致歧义

c++ - 如何为 YAML::Emitter 重载 << 运算符以序列化包含另一个自定义类的 vector 的自定义类

c# - 自定义 IEnumerable 实现无法使用 IEnumerable 进行设置

c++ - 如何在代码中重启一个多线程的C++程序?

c++ - x86下划线前缀问题 : Calling NASM function from C++ function works in x64 but fails in x86

c++ - 了解 ostream 重载

c++ - 如何将一个boost log core公开并注册到另一个

c++ - 在 C++ 中重载 ">>"和 "<<"

c++ - 如何对此应用重载运算符?