二维数组的运算符[][]重载
问题出现了: [] 运算符是否可以重载两次以启用表示法就像二维数组的 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中文网其他相关文章!