Operator[][]-Überladung für zweidimensionale Arrays
Es stellt sich die Frage: Kann der []-Operator zweimal überladen werden, um die Notation zu ermöglichen? wie Funktion3 für ein zweidimensionales Array?
Antwort: Ja, das ist es Möglich
Um dies zu erreichen, kann man den Operator[] überladen, um ein Objekt zurückzugeben, das einen anderen []-Operator für den Zugriff auf das gewünschte Element bietet. Hier ist ein Beispielcode:
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; };
Dies ermöglicht eine Verwendung wie:
ArrayOfArrays aoa; aoa[3][5];
Beachten Sie, dass das Obige ein vereinfachtes Beispiel ist; Normalerweise werden zusätzliche Grenzüberprüfungen und andere Funktionen implementiert.
Das obige ist der detaillierte Inhalt vonKann der []-Operator für den zweidimensionalen Array-Zugriff zweimal überladen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!