#include //%%%%%%%%%%%%%%%%%%%%%%% Classe vett template class vett {private: T *A; int dim; public: vett(int n) {A = new T[n]; dim = n; } vett(int n, T v); vett(const vett& V); //costruttore di copia ~vett(); //distruttore vett& operator=(const vett& V); T& vett::operator[](int i); int operator==(const vett& V); void stampa(ostream& dest) const; void leggi(istream& sorg); }; template vett::vett(int n, T v) {A = new T[n]; for(int i=0;i vett::vett(const vett& V) {A = new T[V.dim]; dim = V.dim; for(int i=0;i vett::~vett() {delete[] A; } template vett& vett::operator=(const vett& V) {int d; // if (this==&V) return *this; if (dim<=V.dim) d=dim; else d=V.dim; for (int i=0;i T& vett::operator[](int i) {if (i<0 || i > dim) {cout << "Errore di indice" << endl; i = 0; } return A[i]; } template int vett::operator==(const vett& V) {if (dim != V.dim) return 0; for (int i=0;i void vett::stampa(ostream& dest) const {for(int i=0;i void vett::leggi(istream& sorg) {for(int i=0;i> A[i]; return; } template ostream& operator<<(ostream& sout, const vett& r) {r.stampa(sout); return sout; } template istream& operator>>(istream& sin, vett& r) {r.leggi(sin); return sin; } //%%%%%%%%%%%%%%%%%%%%%%% main di prova int main() {vett V1(5,1); cout << V1 << endl << endl; vett V2(10); V2[0] = 'a'; V2[1] = 'b'; cout << V2 << endl << endl; vett W1(5); W1 = V1; cout << W1 << endl << endl; return 0; }