#include <iostream>
class Vettore {
private:
int* elementi;
int grandezza;
//costruttore
//è necessario inserire un intero
public:
Vettore(int g): grandezza(g){
//crea i nuovi elementi
elementi = new int[grandezza];
for (int i = 0; i < grandezza; i++) {
elementi[i] = 0;
}
}
//costruttore per copia corretto
//il parametro all'interno del metodo viene passato per riferimento
//altrimenti si avrebbe una sovrascrittura degli elementi
//vedi esempio costruttore per copia errato
Vettore (const Vettore& b):grandezza(b.grandezza)
{
elementi = new int[grandezza];
//copia di ogni elemento
for (int i = 0; i < grandezza; i++) {
elementi[i] = b.elementi[i];
}
}
int getGrandezza() {
return grandezza;
}
int& Elemento(int pos) {
if (pos < grandezza && pos >=0)
return elementi[pos];
else {
std::cout << "Errore: indice fuori dai margini";
return elementi[0];
}
}
//distruttore
~Vettore(){
};
};
//eseguiamo la classe
int main() {
//dichiariamo di voler utilizzare la classe Vettore
//e passiamo il valore dichiarato nel costruttore
Vettore v(10);
v.Elemento(5) = 11;
if (v.Elemento(5) == 10)
std::cout << "Funziona!";
else {
std::cout << "Errore: indice fuori dai margini";
}
Vettore v1(2);
Vettore v2 = v1;
v1.Elemento(0) = 10;
v2.Elemento(0) = 20;
std::cout<<v1.Elemento(0);
return 0;
}