Torna in homepage www.vincenzomanzoni.com
Homepage personale e blog di Vincenzo Manzoni
 
 FAQFAQ   CercaCerca   Cerca con GoogleCerca con Google   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati   Feed AtomFeed
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

[info3] CppExtra

 
Questo forum è chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento è chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> Men at work
Precedente :: Successivo  
Autore Messaggio
Ghep
Utente adolescente
Utente adolescente


Registrato: 14/01/05 17:06
Messaggi: 475
Residenza: Bergamo

MessaggioInviato: Dom Giu 18, 2006 3:27 pm    Oggetto: [info3] CppExtra Rispondi citando

Qualcuno ha voglia di fare un breve excursus sulla parte indicata nel titolo?... in particolare sto trovando abbastanza indigesto il Copy Constructor... sarà il caldo ma secondo me queste slide in particolare sono fatte male Crying or Very sad

grazie
_________________
a volte mi fermo e penso: ma x' a volte Tomaux si ferma e pensa?!?!

eeeeehhhhhh... C'HO IL BRUTTO CULO!?!?!

BLA BLA BLA... quindi se A vera... Civera!!!!

passaporti falsi e intercettazioni illegali.... W LO SCUDETTO DEGLI ONESTI!!
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN
Estevan
Utente adolescente
Utente adolescente


Registrato: 28/12/03 21:12
Messaggi: 310
Residenza: Sant'imbù Al d'emagna

MessaggioInviato: Mer Lug 05, 2006 12:24 am    Oggetto: Rispondi citando

Costruttore di copia
Uno dei costruttori più importanti da modificare tramite overloading è il
costruttore di copia. Tale costruttore evita che sorgano problemi quando si usa
un oggetto per inizializzarne un altro.
Normalmente quando si usa un oggetto per inizializzarne un altro, C++
prevedel'esecuzione di una copia bit a bit, cioè la destinazione sarà una copia
identica dell'oggetto utilizzato per l'inizializzazione. Questo comportamento è
appropriato nella maggior parte dei casi, in alcuni casi (es. allocazione
dimanica) non si deve usare la copia bit a bit.
Si supponga che la classe Class allochi un'area di memoria. Sia A un'instanza diClass
Codice:

Class A;
Class B = A;


Se viene eseguita una copia bit a bit, allora B sarà una copia esatta di A, cioè B
utilizzerà la stessa memoria allocata per A, non una propria area distinta.
Se venisse invocato il distruttore di A (che rilascia l'area allocata)
automaticamente verrebbe eliminata anche l'area “allocata” da B.
Per risolvere questo problema il C++ consente di creare un costruttore di copie
che il compilatore impiega quando si usa un oggetto per inizializzarne un altro.
Esso viene inmpiegato al posto del costruttore bit a bit.
Codice:
classname (const classname& obj){}

oppure facendo l'overloading degli operatori in questo modo (ridefinisce il
comportamento dell'operatore =)
Codice:
classname& operator=(const classname& obj){};



E' importante comprendere che C++ definisce diversi tipi di situazioni in
cui a un oggetto viene assegnato il valore di un altro oggetto.
Il primo caso è l'assegnamento, il secondo è l'inizializzazione che può verificarsimin tre modi:
1.oggetto inizializza esplicitamente un altro oggetto
Codice:
(class x = y;)

2. eseguita copia di un oggetto che deve essere passato ad una funzione
Codice:
(func(y);)

3.creazione di un oggetto temporane (val. restituito da una funzione)
y = funct();
_________________
http://email2image.altervista.org
Protect your mail against spam!!
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Questo forum è chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento è chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> Men at work Tutti i fusi orari sono GMT 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it