[]연산자의 오버로드
배열 첨자 연산자 []를 오버로드할 때 C++에서는 이를 이항 연산자로 간주한다. []는 멤버 함수로만 오버로드가 가능하고 프렌드 함수로는 오버로드할 수 없다. 그리고 연산자 함수인 operator[]()의 인수는 int형으로 사용해야만 한다.
예제
#include <iostream>
using namespace std;
class myclass {
private:
int a[4];
public:
myclass() {
int i;
for (i = 0; i < 4; i++) a[i] = i;
}
int& operator[](int i) {
return a[i];
}
};
int main()
{
myclass ob;
int i;
for (i = 0; i < 4; i++) cout << ob[i] << ", ";
cout << endl;
for (i = 0; i < 4; i++) ob[i] = ob[i] + 10;
for (i = 0; i < 4; i++) cout << ob[i] << ", ";
cout << endl;
return 0;
}
실행 결과
0, 1, 2, 3,
10, 11, 12, 13,
- 생성자 함수에 의해 데이터 멤버인 배열 a의 각 요소가 초기화된다.
- ob[i];에서 객체 ob에 의해 멤버 연산자 함수 operator[](int)가 호출되고 첨자 연산자 [] 내의 값이 매개변수로 전달된다.
참고
1. 장인성 외 5인, (초보자도 쉽게 따라 할 수 있는) C++프로그래밍, 광문각, 2017.02.13
'C++ 기초 1' 카테고리의 다른 글
[C++] goto문 설명 및 예제 (1) | 2024.01.11 |
---|---|
[C++] 6-5 프렌드 연산자 함수 (1) | 2024.01.10 |
[C++] 6-3 관계 연산자의 오버로드 (2) | 2024.01.08 |
[C++] 6-2 단항 연산자의 오버로드 (2) | 2024.01.05 |
[C++] 6-1 이항연산자의 오버로드 (1) | 2024.01.04 |