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