Qual è la differenza tra Copy Constructor e Assignment Operator

Il differenza principale tra il costruttore di copie e l'operatore di assegnazione è quello copy constructor è un tipo di costruttore che aiuta a creare una copia di un oggetto già esistente senza influenzare i valori dell'oggetto originale mentre l'operatore di assegnazione è un operatore che aiuta ad assegnare un nuovo valore a una variabile nel programma.

Un costruttore è un metodo speciale che aiuta a inizializzare un oggetto durante la sua creazione. Ha lo stesso nome del nome della classe e non ha alcun tipo di reso. Un programmatore può scrivere un costruttore per fornire i valori iniziali alle variabili di istanza nella classe. Se non ci sono costruttori nel programma, verrà chiamato il costruttore predefinito. Il costruttore di copie è un tipo di costruttore che aiuta a creare una copia di un oggetto esistente. D'altra parte, l'operatore di assegnazione aiuta ad assegnare un nuovo valore a una variabile.

Aree chiave coperte

1. Cos'è Copy Constructor
     - Definizione, Funzionalità
2. Cos'è l'Operatore di assegnazione
     - Definizione, Funzionalità
3. Qual è la differenza tra Copy Constructor e Assignment Operator
     - Confronto tra le principali differenze

Parole chiave

Costruttore, Copy Constructor, Operatore di assegnazione, Variabile

Cos'è Copy Constructor

Nella programmazione, a volte è necessario creare una copia separata di un oggetto senza influire sull'oggetto originale. Il costruttore di copia è utile in queste situazioni. Permette di creare una replica di un oggetto esistente della stessa classe. Fare riferimento all'esempio seguente.

Figura 1: programma con il costruttore di copie

La classe Triangle ha due variabili di istanza chiamate base e altezza. Nella riga 8, c'è un costruttore parametrizzato. Ci vogliono due argomenti. Questi valori sono assegnati alle variabili di istanza base e altezza. Nella riga 13 c'è un costruttore di copie. Ci vuole un argomento di tipo Triangolo. Il valore base del nuovo oggetto è assegnato alla base della variabile di istanza. Allo stesso modo, il valore di altezza del nuovo oggetto è assegnato all'altezza della variabile di istanza. Inoltre, esiste un metodo chiamato calArea per calcolare e restituire l'area.

Nel metodo principale, t1 e t2 sono oggetti Triangolo. L'oggetto t1 viene passato durante la creazione dell'oggetto t2. Il costruttore di copie viene chiamato per creare l'oggetto t2. Pertanto, la base e l'altezza dell'oggetto T2 è uguale alla base e all'altezza dell'oggetto T1. Infine, entrambi gli oggetti hanno la stessa area.    

Cos'è l'Operatore di assegnazione

Un operatore di assegnazione è utile per assegnare un nuovo valore a una variabile. L'operatore di assegnazione è "=". Quando c'è un'affermazione come c = a + b; la somma di 'a' e 'b' è assegnata alla variabile 'c'.

Figura 2: programma con operatore di assegnazione

Il numero di classe ha una variabile di istanza denominata num. Non c'è un costruttore di parametri nella riga 7. Tuttavia, c'è un costruttore parametrizzato nella riga 9. Prende un argomento e lo assegna alla variabile di istanza usando l'operatore di assegnazione. Nella riga 12, c'è un metodo chiamato display per visualizzare il numero. Nel metodo principale, num1 e num2 sono due oggetti di tipo Numero. La stampa num1 e num2 fornisce i riferimenti a tali oggetti. Il num3 è di tipo Numero. Alla riga 24, num1 è assegnato a num3 usando l'operatore di assegnazione. Pertanto, num3 si riferisce all'oggetto num1. Quindi, la stampa num3 fornisce il riferimento num1.  

L'operatore di assegnazione e le sue variazioni sono le seguenti.

Operatore

Funzionalità

Esempio

=

Assegna l'operando destro all'operando sinistro

 z = x + y

+=

Aggiungere l'operando destro all'operando sinistro e assegnare il risultato all'operando sinistro

z + = y è equivalente a z = z + y

- =

Sottrai l'operando destro dall'operando sinistro e assegna il risultato all'operando sinistro.

z - = y è equivalente a

z = z -y

* =

Moltiplicare l'operando destro con l'operando sinistro e assegnare il risultato all'operando sinistro.

z * = y è equivalente a

z = z * y

/ =

Divide l'operando di sinistra con l'operando di destra e assegna la risposta all'operando di sinistra.

z / = y è equivalente a

z = z / y

% =

Prende il modulo di due operandi e assegna la risposta all'operando sinistro.

z% = y è equivalente a

z = z% y

<<=

Spostamento a sinistra E operatore di assegnazione

z << 5 is equivalent to

 z = z <<5

>> =

Operatore di turno e assegnazione di destra

z >> 5 è equivalente a

 z = z >> 5

& =

Operatore di assegnazione bit per bit AND

z & = 5 è equivalente a

z = z e 5

^ =

OR esclusivo bit per bit e operatore di assegnazione

z ^ = 5 è equivalente a

z = z ^ 5

| =

OP nel bitwise incluso e operatore di assegnazione

z | = 5 è equivalente a z = z | 5

Differenza tra il costruttore di copia e l'operatore di assegnazione

Definizione

Copia costruttore è un costruttore speciale per la creazione di un nuovo oggetto come copia di un oggetto esistente. Al contrario, l'operatore di assegnazione è un operatore che viene utilizzato per assegnare un nuovo valore a una variabile. Queste definizioni spiegano la differenza fondamentale tra il costruttore di copie e l'operatore di assegnazione.

Funzionalità con oggetti

Anche la funzionalità con gli oggetti è una delle principali differenze tra il costruttore di copia e l'operatore di assegnazione. Il costruttore di copie inizializza il nuovo oggetto con un oggetto già esistente mentre l'operatore di assegnazione assegna il valore di un oggetto a un altro oggetto già esistente.

uso

Il costruttore di copie aiuta a creare una copia di un oggetto esistente mentre l'operatore di assegnazione aiuta ad assegnare un nuovo valore a una variabile. Questa è un'altra differenza tra il costruttore di copie e l'operatore di assegnazione.

Conclusione

La differenza tra il costruttore di copie e l'operatore di assegnazione è che il costruttore di copie è un tipo di costruttore che aiuta a creare una copia di un oggetto già esistente senza influire sui valori dell'oggetto originale mentre l'operatore di assegnazione è un operatore che assegna un nuovo valore a una variabile nel programma.

Riferimento:

1. Thakur, Dinesh. "Copy Constructor in Java Example." Note del computer, disponibile qui.