본문 바로가기

C++ 기초 1

[C++] 6-4 []연산자의 오버로드

[]연산자의 오버로드

배열 첨자 연산자 []를 오버로드할 때 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