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); }
댓글
댓글 쓰기