C++ : 연산자 오버로딩(7) - 배열의 인덱스
참고 : 열혈강의 C++ 프로그래밍 책
#include <iostream>
#include <cstdlib>
using namespace std;
class IntArray
{
private:
int *arr;
int arrlen;
// 배열 클래스의 복사 생성자를 막기 위함
IntArray(const IntArray& arr) { }
// 배열 클래스의 대입 연산자를 막기 위함
IntArray& operator=(const IntArray& arr) { }
public:
IntArray(int len) : arrlen(len)
{
arr = new int[len];
}
int& operator[] (int idx)
{
if( idx < 0 || idx >= arrlen)
{
cout << "Aray index out of bound exception" << endl;
exit(1);
}
return arr[idx];
}
// ShowAllData에서 파라미터를 const로 해서 대응하는 const 멤버함수가 필요함
int& operator[] (int idx) const
{
if( idx < 0 || idx >= arrlen)
{
cout << "Aray index out of bound exception" << endl;
exit(1);
}
return arr[idx];
}
int GetArrLen() const
{
return arrlen;
}
~IntArray()
{
delete []arr;
}
};
void ShowAllData(const IntArray& ref)
{
int len = ref.GetArrLen();
for(int idx = 0; idx < len; idx++)
cout << ref[idx] << endl;
}
// 테스트
void Operator7()
{
IntArray arr(5);
// 값 입력
for(int i = 0; i < 5; i++)
arr[i] = (i+1) * 11;
// 값 출력
ShowAllData(arr);
}
댓글
댓글 쓰기