source
#include <iostream>
using namespace std;

class DynamicArray
{
private:
  int **array;
  int x;    // x축
  int y;    // y축
public:
  // 생성자
  DynamicArray();
  DynamicArray(int x, int y);
  DynamicArray(const DynamicArray& da);
  
  // 소멸자
  ~DynamicArray();

  // 멤버 함수
  int getX() const;
  int getY() const;
  void allocate(int x, int y);
  void free();
  void initArray();
  void printArray();
};

// 멤버 함수
int DynamicArray::getX() const
{
  return x;
}

// 멤버 함수
int DynamicArray::getY() const
{
  return y;
}

// 멤버 함수
void DynamicArray::allocate(int x, int y)
{
  this->= x;
  this->= y;

  // 동적 메모리 할당
  array = new int* [x];
  for(int i = 0 ; i < x ; ++i)
  {
    array[i] = new int[y];
  }
}

// 멤버 함수
void DynamicArray::free()
{
  // 동적 메모리 해제
  for(int i = 0 ; i < x ; ++i)
  {
    delete[] array[i];
  }
  delete[] array;
}

// 멤버 함수
void DynamicArray::initArray()
{
  int cnt = 0;

  for(int i = 0 ; i < x ; ++i)
  {
    for(int j = 0 ; j < y ; ++j)
    {
      array[i][j] = cnt;
      ++cnt;
    }
  }
}

// 멤버 함수
void DynamicArray::printArray()
{
  for(int i = 0 ; i < x ; ++i)
  {
    for(int j = 0 ; j < y ; ++j)
    {
      cout << array[i][j] << endl;
    }
  }
}

// 디폴트 생성자
DynamicArray::DynamicArray()
{
  array = NULL;  
}

// 인자가 있는 생성자
DynamicArray::DynamicArray(int x, int y)
{
  allocate(x, y);
}

// 복사 생성자
DynamicArray::DynamicArray(const DynamicArray& da)
{
  x = da.getX();
  y = da.getY();
  allocate(x, y);

  for(int i = 0 ; i < x ; ++i)
  {
    for(int j = 0 ; j < y ; ++j)
    {
      array[i][j] = da.array[i][j];
    }
  }
}

// 소멸자
DynamicArray::~DynamicArray()
{
  free();
}

int main()
{
  DynamicArray da(57);

  da.initArray();
  da.printArray();

  return 0;
}

+ Recent posts