二維陣列的運算子[][]重載
問題出現了: [] 運算子是否可以重載兩次以啟用表示法就像二維數組的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中文網其他相關文章!