Salve ragazzi,
la faccio molto breve. Ho un costruttore di copia per una classe chiamata Sportello, ed è dichiarato nel seguente modo:
Cercando di fare i piu controlli possibili aggiunsi una riga all'interno della definizione dell'costr. di copia per far si che non si possa cercare di usare il costruttore di copia sull'oggetto stesso che lo chiama, cioè la seguente cosa:codice:Sportello(const Sportello& t);
il controllo è il seguente:codice:Sportello s (s);
che funziona l'ho visto al sicuro perché dopo quando cercavo di fare Sportello s (s) mi faceva quel che ho messo dentro l'if (un cout), volevo sapere se però è un errore logico o qualcosa del genere, e se non lo è allora come si può spiegare per bene il funzionamento di questo codice.codice:if(this==&t) {//blibliblabla}
Questo perché questa cosa l'ho fatta in un esame dell'uni e la professoressa me lo ha segnato come errore dicendo che è un errore logico e che non funzionerebbe(ma non è vero perché l'ho visto con i miei occhi che funziona, pero lei corregge su carta e quindi non ha avuto modo di testarlo).. Dopo un breve dibattito ha concluso dicendo che sarebbe andata a riguardare il funzionamento dei costruttori di copia e dell'this, ma siccome ho paura non lo faccia voglio prepararmi per affrontare nuovamente la discussione cercando di portare ragionamenti più persuasivi del "ma le dico che funzionava!".
Grazie in anticipo a chi ne capisce più che di me e mi da una mano..