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 = x;
this->y = 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(5, 7);
da.initArray();
da.printArray();
return 0;
}