Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Non comprendo i costruttori di copia!

    Salve ragazzi, sono un po incastrato nei costruttori di copia, ho compreso perchè questi debbano essere creati, ovvero per gestire i costruttori e distruttori nella passaggio di oggetti che creando una copia a bit poi dopo succedono dei casini!
    e fin qui ok!

    ma... qui non so neanche come esprimermi! oltre la normale sintassi di creazione del costruttore di copia vedo poi aprirsi le graffe e del codice che non ne comprendo la logicità! come si crea il codice del costruttore di copia, le regole che fanno si che si crei new ad una variabile od altro! esiste una regola?io vedo gli esempi e mi sembra empirico alle volte si ricrea un po di quello altre un po di quell'altro ma non ne intravvedo la regola di fondo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Il linguaggio? Hai letto il Regolamento? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    che idiota, davvero chiedo scusa!
    sono così preso da sto studio che mi sono fulminato...davo per scontato che a sto mondo esistestesse solo il C++, ormai mi affaccio alla finestra e per salutare dico: cout << " ciao "
    il linguaggio è il C++ scusate ancora

  4. #4
    si ma... rimane il fatto: come funzionano i costruttori di copia? VVoVe:

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Mettiamo il costruttore di copia della nostra classe

    MiaClasse(const MiaClasse &Cls)

    questo è un costruttore di copia.
    Questa copia deve essere effetuata con attenzione evitando che i due oggetti puntino ala stessa area di memoria: questa cosa succede se venisse effettuata la copia di default membro a membro (MiaClasse = MiaClasse1 non lo possiamo fare)
    I costuttori di copia sono invocati ongiqualvolta è necessario copiare un oggetto, come quando si apssa un argomento per valore ad una funzione, o si ritorna da una funzion.
    Il costruttore di copia deve ricevere per forza un oggetto tramite riferimento altrimenti si avrà una ricorsione infinita (il passaggio per valore genera una chiamata al costruttore di copia).
    Non potendo fare la copia membro a membro, dovrai prima di tutto fare
    codice:
    MiaClasse Cls2 = new MiaClasse();
    Cls2->x = Cls.x;
    Cls2->y = Cls.y;
    return *Cls2;
    Se il costruttore di copia copiasse semplicemente il puntatore dell'oggeto dall'orgigine alla destinazione, avremmo due puntatori che puntano alla stessa area di memoria e non una nuov istanza dell'oggetto.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    ti ringrazio molto... è un bricinino più chiara la cosa...
    solo... una domanda: ma nel costruttore di copia... quando si da il new la classe viene ricreata ok? allora perchè intervenire con i puntatore nei suoi membri? tanto a disposizione ora non ho una nuova copia?

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    si ma ne hai una copia a parte.
    Per copia se ne intende una nuova ma tale e quale alla precednete.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  8. #8
    uhmm credo di aver capito...
    ma che iodiota... ho compreso il perchè servono e mi torna complicato costruirli
    grazie mille ora ho le idee un po più chiare

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Non devi far altro che creare una funzione e copiare tutti i dati via membro membro.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  10. #10
    ma mi sfuggiva proprio questo pensavo ci fosse un criterio particolare da dare a questa funzione per ricreare i nuovi membri della copia!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.