2차원 배열에 대한 연산자[][] 오버로드
질문이 생깁니다: 표기법을 활성화하기 위해 [] 연산자를 두 번 오버로드할 수 있습니까? 2차원 배열의 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];
위는 단순화된 예입니다. 추가 경계 검사 및 기타 기능은 일반적으로 구현됩니다.
위 내용은 2차원 배열 액세스를 위해 [] 연산자를 두 번 오버로드할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!