#include <iostream>
using namespace std;
template <class T>
class Array{
T *list;
int size;
public:
Array(int sz=50);//constructor
Array(Array<T>&a);//copy constructor
~Array();
Array<T>&operator=(const Array<T>&rhs);
T&operator[](int n)const;
operator T*();
operator const T*()const;
int getSize()const;
void resize(int sz);
};
template <class T>
Array<T>::Array(int sz=50){
size=sz;
list=new T[size];
}
template <class T>
Array<T>::Array(Array<T>&a){
size=a.size;
for(int i=0;i<size;i++){
list[i]=a.list[i];
}
}
template <class T>
Array<T> &Array<T>operator=(const Array<T>&rhs){
rhs.size=size;
for(int i=0;i<size;i++){
list[i]=rhs.list[i];
}
return rhs;
}
template <class T>
T &Array<T>::operator[](int n)const{
return list[n];
}
template <class T>
Array<T>::operator T*(){
return list;
}
template <class T>
Array<T>::operator const T*()const{
return list;
}
template <class T>
int Array<T>::getSize()const{
return size;
}
template <class T>
void Array<T>::resize(int sz){
}