여러 인수를 사용하여 C에서 배열 연산자 오버로드
C에서는 배열 연산자 []를 사용하여 배열에 액세스할 수 있습니다. 단일 인덱스를 인수로 사용합니다. 그러나 일부 시나리오에서는 여러 인덱스를 사용하여 배열에 액세스해야 할 수도 있습니다. 여러 인수를 취하도록 배열 연산자를 오버로드하는 것이 가능합니까?
제공된 코드 조각은 세 개의 인수를 허용하도록 배열 연산자를 오버로드하려고 시도하지만 "이진 연산자 '['에 매개 변수가 너무 많습니다."라는 오류와 함께 실패합니다. ."
C23 이전에는
C23 이전에는 불가능했습니다. 여러 인수를 허용하도록 배열 연산자를 오버로드합니다. 해결 방법은 대신에 Operator()를 오버로드하는 것이었습니다. 적절한 프로토타입으로 함수를 생성하면 여러 인수를 사용하여 배열 연산자의 동작을 시뮬레이션할 수 있습니다.
C 23 및 그 이상
C 23의 출현과 함께 , 여러 첨자 인수를 배열 연산자에 직접 전달할 수 있습니다. 이 기능은 특히 다차원 배열로 작업할 때 코드를 단순화하고 가독성을 향상시킵니다.
예를 들어 다음 코드 조각을 고려해보세요.
struct MultiDimArray { std::vector<int> m_cells; int m_res; int m_resSqr; const T& operator[](const int i, const int j, const int k) const { return m_cells[k*m_resSqr + j*m_res + i]; } T& operator[](const int i, const int j, const int k) { return m_cells[k*m_resSqr + j*m_res + i]; } };
이 코드에서는 배열 연산자가 오버로드됩니다. 세 가지 인수를 취합니다. 이를 통해 프로그래머는 추가 기능이나 해결 방법 없이 여러 인덱스를 사용하여 배열에 액세스할 수 있습니다.
위 내용은 여러 인수를 사용하여 C에서 배열 연산자를 오버로드할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!