首页 >后端开发 >C++ >二维数组访问时能否重载两次[]运算符?

二维数组访问时能否重载两次[]运算符?

Barbara Streisand
Barbara Streisand原创
2024-12-30 09:19:14441浏览

Can the [] Operator Be Overloaded Twice for Two-Dimensional Array Access?

二维数组的运算符[][]重载

问题出现了: [] 运算符是否可以重载两次以启用表示法就像二维数组的 function3 一样?

答案:是的,它是可能的

要实现这一点,可以重载运算符[]以返回一个对象,该对象提供另一个[]运算符来访问所需的元素。这是一个示例代码:

class ArrayOfArrays {
public:
    ArrayOfArrays() {
        _arrayofarrays = new int*[10];
        for(int i = 0; i < 10; ++i)
            _arrayofarrays[i] = new int[10];
    }

    class Proxy {
    public:
        Proxy(int* _array) : _array(_array) { }

        int operator[](int index) {
            return _array[index];
        }
    private:
        int* _array;
    };

    Proxy operator[](int index) {
        return Proxy(_arrayofarrays[index]);
    }

private:
    int** _arrayofarrays;
};

这允许使用如下:

ArrayOfArrays aoa;
aoa[3][5];

请注意,上面是一个简化的示例;通常会实现额外的边界检查和其他功能。

以上是二维数组访问时能否重载两次[]运算符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn