#include <iostream>
class Lista{
public:
 Lista(): dati(new int[SIZE]), ndati(0), lunvec(SIZE){}
 ~Lista(){delete []dati;}
 Lista(const Lista &L):dati(new int[L.lunvec]),
   ndati(L.ndati), lunvec(L.lunvec) {
       for (int k=0; k<ndati; k++) {
         dati[k] = L.dati[k]; } }
 Lista & operator=(const Lista &L){
       if (this == &L) return *this;
       else {
         delete [] dati;
         dati = new int[L.lunvec];
         lunvec = L.lunvec;
         for (ndati=0; ndati < L.ndati; ndati++) {
           dati[ndati] = L.dati[ndati]; }
         return *this;  }}
 void aggiungi(int n){ndati=ndati+1;if(ndati<=lunvec){dati[ndati-1]=n;}
   else { cout << "superata la dimensione del vettore" << endl;}}
 void print (int i){cout << dati[i] << endl;}
private:
 static const int SIZE=10; 
 int *dati;
 int ndati;
 int lunvec;
};
int main()
{
 Lista l,l1;
 for(int i=0;i<11;i++){
 l.aggiungi(i);
 }
 l1 = l;
 for(int i=0;i<10;i++){
   l1.print(i);}
}
