Come implementare il costruttore di copie in C ++?



Capire i costruttori è stato un enigma per molti. Questo articolo ti aiuterà a demistificare il concetto di Copy Constructor in C ++

Comprensione Costruttori è stato un enigma per molti. Questo articolo ti aiuterà a demistificare il concetto di Copy Constructor in C ++. I seguenti suggerimenti saranno trattati in questo articolo,

come fare una classe singleton

Quindi iniziamocon questo articolo su Copy Constructor in C ++





Un Copy Constructor è un Constructor che inizializza un oggetto di una classe utilizzando un altro oggetto della stessa classe.

Sintassi:



Abbiamo la parola chiave const perché vogliamo rendere costante il valore e assicurarci che non venga modificato da qualche parte nel codice. Come un costruttore predefinito, anche un costruttore di copia viene fornito dal compilatore. Questo è chiamato Default Copy Constructor. I costruttori di copie possono essere resi privati. Non possiamo copiare gli oggetti della classe quando rendiamo privato il costruttore della copia.

Ecco un codice di esempio :

#include utilizzando lo spazio dei nomi std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Il costruttore normale è chiamato qui test t2 = t1 // Il costruttore di copia è chiamato qui cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produzione:



Costruttore copia output in C ++ - Edureka

Spiegazione

Il programma sopra è una demo di base di un costruttore di copie. Abbiamo un test di classe, con un membro dati privato di tipo int chiamato x. Quindi abbiamo un costruttore parametrizzato, che assegna 7 alle variabili x. Abbiamo un costruttore di copie, che istanzia il valore di t2 con il valore di t1. Viene inviato l'indirizzo di t2 che contiene il valore di t1 ed è assegnato a x. Esiste una funzione get che restituisce il valore di x.

La funzione principale ha un oggetto di test di classe chiamato t1. C'è un valore associato a questo oggetto, questo è un parametro. La funzione principale ha un altro oggetto di test di classe chiamato t2. Questo viene inizializzato utilizzando la variabile t1 e il costruttore di copia viene chiamato qui. Infine, la funzione get viene chiamata rispetto a t1 e t2 per ottenere il valore di x.

ottenere la dimensione dell'array javascript

Tipi

Esistono due tipi di costruttore di copia.
⦁ Costruttore copia superficiale
⦁ Deep Copy Constructor

Andando avanti con questo articolo su Copy Constructor in C ++

Costruttore di copia superficiale:

Un costruttore di copia superficiale è un costruttore di copia predefinito.

Esempio:

Due persone accedono contemporaneamente a un database e apportano modifiche ai valori su due sistemi diversi. Se apportano modifiche al database, entrambe queste modifiche verranno visualizzate nel database. Entrambi gli oggetti punteranno alla stessa posizione di memoria. Questo è Shallow Copy Constructor. Ciò accade principalmente quando lavoriamo con il costruttore di copia predefinito. Ecco un codice di esempio per: Shallow Copy Constructor:

#include using namespace std class test {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Produzione:

come aumentare un numero a una potenza in java

Spiegazione:

Nel codice sopra, usiamo un costruttore di copia predefinito fornito dal compilatore. Quindi è un Shallow Copy Constructor.

Andando avanti con questo articolo su Copy Constructor in C ++

Costruttore di copia profonda

Deep Copy Constructor è un costruttore di copie definito dall'utente.
Per esempio:
Quando due persone devono fare una presentazione ed entrambe copiano dalla stessa fonte, le copie sono separate. Quindi, quando si apportano modifiche solo l'altra copia non viene modificata. Questo è Deep Copy Constructor. Entrambi gli oggetti punteranno a posizioni di memoria diverse e le modifiche in uno non avranno alcun effetto sull'altro. La memoria viene allocata dinamicamente.

Ecco un codice di esempio per: Deep Copy Constructor:

#include utilizzando lo spazio dei nomi std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Il costruttore normale è chiamato qui test t2 = t1 // Il costruttore di copia è chiamato qui cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produzione:

Spiegazione

Questo è lo stesso codice che abbiamo usato sopra, che fornisce un output simile. È un Copy Constructor definito dall'utente e quindi è un Deep Copy Constructor.

Quindi siamo giunti alla fine di questo articolo su 'Copy Constructor in C ++'. Se desideri saperne di più, dai un'occhiata al da Edureka, una società di apprendimento online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.