Il costruttore di copia in C ++




copiare costruttore in C ++,  C ++ costruttore di copia, C ++ di programmazione per principiantiQuando i principianti imparare a programmare, prima cosa, quando si considera un nuovo argomento, si pone la questione – che richiede uno o l'altro “cosa” Ciò che deve essere appreso oggi. rispose subito a questa domanda: “Perché abbiamo bisogno costruttore di copia?”.

Il costruttore di copia richiesto per, in modo da poter creare “vero” (non pobytovыe) copiare la classe di oggetti. Questa copia dell'oggetto può essere necessaria nei seguenti casi:

  • quando un oggetto classe alla funzione di trasferimento, come parametro significato (invece del link);
  • al ritorno dalla classe della funzione dell'oggetto, come risultato del suo lavoro;
  • inizializzazione una classe di oggetti ulteriore aspetto di questa classe.

Durante il trasferimento di un oggetto come un parametro alla funzione significato, Questa funzione inizierà a lavorare con sé un po 'alla copia, e non con i campi dell'oggetto. Let determinato costruttore e distruttore. La prima memoria viene allocata, e la seconda rilascia. Durante la funzione di funzionamento, a poco a copia bit dei punti puntatore oggetto di un indirizzo di memoria, dove l'oggetto originale. mentre, quando la funzione di lavoro è completato – rimosso e la copia dell'oggetto bit-wise. A sua rimozione è necessario per lavorare una determinata e distruttore libera la memoria, che è occupato da l'oggetto originale,. Il programma continua, e l'arresto, nuovo lavoro distruttore, cercando di liberare lo stesso segmento di memoria. Questo farà sì che l'errore di programma.

l'uso di costruttore di copia – un ottimo modo per aggirare questi errori e problemi. Lo farà “vero” copia oggetto, che avrà una zona privata del mucchio.

Il costruttore di copia la sintassi è la seguente:

Esaminiamo il seguente semplice, ma un ottimo esempio. In esso ci occuperemo tutto 3 in tal caso è opportuno utilizzare costruttore di copia. verrà creata la classe, contenente no-argomento del costruttore, costruttore di copia e distruttore. Ad esempio non era troppo ingombrante, Il costruttore e distruttore verrà visualizzato il tipo di messaggio “progettista Attivazione”, “Attivazione dektruktor”… Per allocare e liberare la memoria non lo farà. Ci sarà perfettamente visto quante volte e quante progettisti lavoreranno di nuovo distruttore. ovviamente, distruttore (se ha liberato la memoria) non dovrebbe innescare più volte, di progettista, memoria allocazione.

esempio:

Il costruttore senza parametri verrà chiamato durante la creazione di nuovi impianti classe. Il costruttore di copia – durante la realizzazione di copie di un oggetto. Il distruttore viene attivato quando la rimozione e l'oggetto reale e la sua copia. Le funzioni del corpo tutti descritti in dettaglio e non richiede eventuali commenti.

Eseguendo il programma vedrà il seguente nella console:

copiare costruttore in C ++,  C ++ costruttore di copia,  Programmazione in C ++ da zero

Vediamo cosa il programma ha generato alla console. blocco 1 – quando si crea un nuovo oggetto, caricare no-argomento del costruttore. il blocco 2 abbiamo posto la funzione showFunc(). Durante la trasmissione in essa “parametro oggetto” significato, carico costruttore di copia e creare “vero” una copia della classe Object classe unica. Quando si esce da questa funzione, distruttore di carico, la copia dell'oggetto viene distrutto. a proposito, il, che il trasferimento dell'oggetto come parametro per valore, fa sì che il costruttore di copia, Si tratta di un'ottima occasione per la trasmissione su oggetto di collegamento. Ciò farà risparmiare tempo e la memoria.

il blocco 3 funzione pubblicato returnObjectFunc(). Come precisato nel suo corpo per creare un nuovo oggetto della classe classe unica – prima di caricare il costruttore senza parametri. Successivamente, il codice funzione viene eseguita e durante il ritorno dell'oggetto nella funzione principale principale, carico costruttore di copia. dopo, come dovrebbe essere, distruttore ha lavorato due volte: oggetto e la sua copia reale.

il quarto blocco, durante la dichiarazione e l'inizializzazione di un nuovo oggetto Object2, carico costruttore di copia. Al completamento del carico di lavoro per copia programma distruttore dell'oggetto del quarto blocco e oggetto Object1 dal primo blocco.

Se commentiamo fuori /*costruttore di copia * / in classe ed eseguire di nuovo il programma – vedere, che il costruttore senza lavoro parametri 2 piega, e distruttore – Si corre per cinque volte.

copiare costruttore in C ++,  C ++ costruttore di copia, Programmazione in C ++ da zero

In questa situazione, Se il distruttore libera la memoria - di un errore si è verificato nel programma.

Consiglio vivamente la lettura a tema Il costruttore di copia nel libro di Stephen Prata “Il linguaggio di programmazione C ++. Lezioni e seminari. 6-edizione.” Ha rivelato un molto più profondo e comprende tutte le sfumature di base di utilizzare il costruttore di copia. Dettagli L'articolo l'operatore di assegnazione =.

Per sostenere il nostro sito – cliccare sul salvadanaio e scegliere qualsiasi modo conveniente.

Newsletter nuove lezioni sulla programmazione:

Il costruttore di copia in C ++
5 (100%) 3 voti

6 pensieri su "Il costruttore di copia in C ++

  1. E perché nel codice definito, puntatore inutilizzato?

    1. Perché almeno qualche variabile, membro della classe, Deve essere definito nella classe?
      Se non ti piace un puntatore, definire una variabile di tipo int.

  2. Nel 3 ° blocco costruttore di copia non è causato, rispettivamente, e il 2 ° non è distruttore. Questo è per i compilatori MinGW, fragore(compilatore in linea ). Per Microsoft VC ++ tutte le opere, come nell'esempio.

    1. Perché non c'è davvero no oggetto, in cui è necessario per restituire un risultato.
      Hai bisogno di registrare qualcosa di simile:

      circa:

Lascia un Commento

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *