#include <iostream>
using namespace std;

class dynarray {
	int *p;
	int size;
public:
	dynarray(int a);
	int &operator[](int i){return p[i];}
	dynarray &operator=(dynarray &ob);
};

dynarray::dynarray(int a)
{
	p = new int[a];
	if (!p){
		cout << "メモリ割り当てエラー\n";
		exit(1);
	}
	size = a;
}
dynarray &dynarray::operator=(dynarray &ob)
{
	if(size < ob.size){
		delete [] p;
		p = new int[ob.size];
		if (!p){
			cout << "メモリ割り当てエラー\n";
			exit(1);
		}
	}
	size = ob.size;
	for(int i = 0; i < size; i++){
		p[i] = ob.p[i];
	}
	return *this;
}

int main(){
	dynarray d1(10);
	for(int i = 0; i < 10; i++){
		d1[i] = i * i;
	}
	d1[5] = 30;
	dynarray d2(0);
	d2 = d1;
	for(int i = 0; i < 10; i++){
		cout << d2[i] << "\n";
	}
	return 0;
}