Quando chiamiamo un costruttore di copie?
Nel linguaggio di programmazione C ++, possiamo chiamare una funzione di copia nelle seguenti situazioni. Si chiama quando restituiamo un oggetto della classe per valore. Si consiglia anche un costruttore di copie che sia utilizzato nella condizione quando passiamo un oggetto della classe con un valore come parametro quando creiamo un oggetto che viene creato a seconda dell'altro oggetto appartenente alla stessa classe.
Tipi di un costruttore di copie
Esistono due tipi di costruttori di copie.
Copia costruttore (impostazione predefinita)
Se l'utente non definisce alcun costruttore di copie, quindi, in questo caso, il compilatore fornisce il suo costruttore.
Costruttore definito dall'utente
Il programmatore definisce sempre il costruttore definito dall'utente.
Quando abbiamo bisogno di un costruttore di copie?
Se il nostro costruttore di copie non è definito, il compilatore C ++ crea il costruttore di copie che è quello predefinito. Dobbiamo definire il nostro costruttore quando un oggetto utilizza puntatori, allocazione della memoria dinamica o altre risorse.
Sintassi
Name_of_class (const name_of_class & object_name)Dopo aver usato il costruttore di copie, otteniamo due copie. Uno è noto come una copia superficiale, mentre il secondo è una copia profonda. La copia superficiale è prodotta dal costruttore di copie predefinite. Mentre il costruttore di copie profonde assegna automaticamente la memoria, copia il valore effettivo. I valori copiati e effettivi sono archiviati in diversi luoghi all'interno della memoria. Si dice che sia richiesta una copia profonda durante la creazione di un costruttore definito dall'utente.
Implementazione di un costruttore di copie
Abbiamo implementato il codice nell'editor di testo di Ubuntu e il valore risultante è ottenuto dall'esecuzione sul terminale Linux.
Questo programma utilizzerà il concetto di programmazione orientato agli oggetti, poiché i costruttori vengono utilizzati per creare lezioni. Una classe viene creata con la parte privata con valori di tipo intero. Nella parte pubblica, viene creato un costruttore con il nome della classe. Questo costruttore utilizzerà due valori nel parametro per ricevere il valore passato dal programma principale. All'interno del costruttore, i valori inviati sono assegnati alle nuove variabili.
Dopo il costruttore, di nuovo, viene creato un nuovo costruttore. È un costruttore copiato. Come abbiamo descritto sopra, questo costruttore prende il nome della classe e l'oggetto creato.
Quindi abbiamo usato due funzioni, getx () e get (), che restituiranno il valore delle variabili. Nel programma principale, i costruttori vengono chiamati utilizzando il nome della classe, ciascuno (originale) e il costruttore di copie contiene argomenti nel parametro durante la chiamata. Il costruttore normale contiene due valori che vengono passati alla variabile. E il costruttore di copie è assegnato con l'oggetto della prima classe. Per visualizzare il valore risultante, chiameremo la funzione GET utilizzando gli oggetti di entrambi i costruttori.
Salveremo il codice ed eseguiremo lo utilizzando utilizzando il compilatore G++.
Durante l'esecuzione del codice sorgente, è possibile vedere che entrambi i valori sono gli stessi che i costruttori sono passati da quello originale o dal costruttore di copia.
Concetto di elenco collegato in c++
Un elenco collegato è una struttura di dati che contiene diversi nodi collegati tramite gli indirizzi memorizzati in ciascun nodo.
nodo structCreiamo una struttura con una parte di dati che memorizza i valori in essa e la parte successiva che memorizza l'indirizzo del nodo adiacente. Il prossimo passo che facciamo è inizializzare i nodi nel programma principale. Tutti i nodi sono dichiarati nulli usando i puntatori.
Ogni parte di dati del nodo è assegnata dai valori. Questo viene fatto accedendo a quella parte del nodo.
One -> data = 1;Allo stesso modo tutti i nodi ottengono i loro dati pertinenti.
La cosa principale nell'elenco collegato è la connessione tra i nodi creati. Questo viene fatto quando viene assegnata la parte successiva di un nodo con l'indirizzo del secondo nodo; Allo stesso modo, il secondo nodo contiene l'indirizzo del terzo. E così via, questo processo continua fino all'ultimo nodo. La prossima parte dell'ultimo nodo è dichiarata null in quanto non esiste un ulteriore nodo qui.
Il costruttore di copie e l'elenco collegato in C++
Per l'utilizzo di un costruttore di copie nell'elenco collegato, abbiamo utilizzato una struttura per creare il nodo. Dopo aver chiuso la struttura, una classe con il nome Linked_List viene utilizzata qui. La parte privata conterrà le variabili di una testa di tipo puntatore e una coda. Un costruttore normale assegna i valori alle parti della testa e della coda nella parte pubblica.
Due variabili di tipo intero accetteranno i valori che verranno inviati dal programma principale creando l'oggetto. Queste variabili sono assegnate alle variabili della testa e della coda per archiviare i valori in esse. Dopo il normale costruttore, viene dichiarato un costruttore di copie. Questo sarà dello stesso nome e il suo parametro conterrà un nome di classe costante con l'oggetto. Questo costruttore è anche assegnato con gli stessi valori. Ma a questi si accede con gli oggetti. Otterremo questi valori usando la funzione get (). Verranno restituiti entrambi i valori nella variabile.
Dopo il costruttore, viene utilizzata una semplice funzione di aggiungere un nodo al nodo esistente. Viene creato un nuovo nodo di nome temp. La parte dei dati è assegnata con il valore. E la parte successiva è dichiarata null. Qui controlliamo se il nodo aggiunto è il primo o l'elenco collegato contiene già un nodo in esso. Quindi un'istruzione IF-Else viene utilizzata qui. Controllerà se la testa è uguale a null, quindi la testa e la coda vengono assegnate il valore di "TMP". Ma in un altro caso, se non sono nulli, la parte successiva della coda è assegnata con l'indirizzo di un nuovo nodo. Significa che "TMP" conterrà l'indirizzo della coda. E la coda riceverà il valore aggiornato.
Ora nel programma principale, creeremo l'oggetto della classe; Creando l'oggetto, i costruttori vengono chiamati. L'originale e il costruttore di copie conterranno i valori dei parametri. Il costruttore di copie crea l'oggetto ed è assegnato con l'oggetto del costruttore originale.
Questi valori verranno visualizzati. Per vedere il valore risultante, eseguire il programma sul terminale. Puoi vedere che entrambi i costruttori hanno gli stessi valori.
Conclusione
Questo articolo spiega il funzionamento e la creazione di un costruttore di copie nell'elenco collegato usando C++. Questo viene fatto spiegando il costruttore di copie, i suoi tipi e l'uso in un semplice programma dimostrato nell'esempio. Inoltre, viene anche spiegato il concetto di creazione di elenchi collegati. Un esempio combinato di un elenco collegato con il costruttore di copie viene utilizzato per cancellare ogni ambiguità dell'utente finale.