Ciao Shodan, Grazie intanto per avermi risposto.. 
adesso ti scrivo per intero il costruttore di copia:
codice:
Fattura::Fattura(const Fattura &f)
{ nome=new char[strlen(f.nome)+1];
strcpy(nome, f.nome);
cognome=new char[strlen(f.cognome)+1];
strcpy(cognome, f.cognome);
iva=f.iva;
prezzo.resize(f.prezzo.size());
copy(f.prezzo.begin(), f.prezzo.end(), prezzo.begin());
quantita.resize(f.quantita.size());
copy(f.quantita.begin(), f.quantita.end(), quantita.begin());
descrizione.resize(f.descrizione.size());
copy(f.descrizione.begin(), f.descrizione.end(), descrizione.begin());
}
Per quanto riguarda i set, li faccio così:
codice:
void Fattura::setNome(char *n)
{ nome=new char[strlen(n)+1];
strcpy(nome, n);
}
void Fattura::setCognome(char *c)
{ cognome=new char[strlen(c)+1];
strcpy(cognome, c); }
void Fattura::setIva(float e)
{ iva=e; }
Ma quindi se avessi delle List al posto dei Vector il costruttore di copia sarebbe uguale?