[c++] 배열 인덱싱 연산자의 오버로딩
C++에서는 사용자 정의 형식에 대한 배열 인덱싱 연산자 오버로딩이 가능합니다. 이것은 사용자가 정의한 클래스나 구조체에 대해서 배열처럼 동작하게 만들 수 있습니다.
배열 인덱싱 연산자 오버로딩의 구문
배열 인덱싱 연산자 오버로딩은 다음과 같이 정의됩니다:
ReturnType& ClassName::operator[](IndexType index) {
// 인덱스 연산에 대한 로직
}
여기서:
ReturnType
은 인덱싱 결과의 타입입니다.ClassName
은 사용자가 정의한 클래스나 구조체의 이름입니다.IndexType
은 인덱스 변수의 타입입니다.operator[]
는 인덱싱 연산자를 나타냅니다.
예제
다음은 MyArray
라는 사용자가 정의한 클래스에 대한 배열 인덱싱 연산자 오버로딩 예제입니다.
#include <iostream>
class MyArray {
private:
int arr[5] = {1, 2, 3, 4, 5};
public:
int& operator[](int index) {
return arr[index];
}
};
int main() {
MyArray numbers;
std::cout << numbers[2] << std::endl; // 출력: 3
numbers[2] = 10;
std::cout << numbers[2] << std::endl; // 출력: 10
return 0;
}
위 예제에서 MyArray
클래스는 정수형 배열을 캡슐화하고, operator[]
함수를 사용하여 배열의 인덱싱을 가능하게 하고 있습니다.
결론
C++에서 배열 인덱싱 연산자는 사용자 정의 클래스나 구조체에 대해 오버로딩하여 배열처럼 동작하도록 만들 수 있습니다. 이것은 유용한 기능으로, 코드의 가독성을 향상시키고 사용자 정의 형식을 더 직관적으로 사용할 수 있게 합니다.
배열 인덱싱 연산자 오버로딩에 대한 자세한 내용은 C++ 공식 문서를 참고하십시오.