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);
}

댓글

이 블로그의 인기 게시물

C++ : Class로 만든 DLL Export 및 Import

VMware 환경에서 우분투로 안드로이드 환경 구축하기(1)