Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'operatore di assegnazione (=) è, in senso stretto, un operatore binario. La relativa dichiarazione è identica a qualsiasi altro operatore binario, con le seguenti eccezioni:
- Deve essere una funzione membro non statica. Nessun operator= può essere dichiarato come funzione non membro.
- Non è ereditato da classi derivate.
- Una funzione operator= predefinita può essere generata dal compilatore per i tipi di classe, se non esiste.
Nell'esempio seguente viene illustrato come dichiarare un operatore di assegnazione:
class Point
{
public:
int _x, _y;
// Right side of copy assignment is the argument.
Point& operator=(const Point&);
};
// Define copy assignment operator.
Point& Point::operator=(const Point& otherPoint)
{
_x = otherPoint._x;
_y = otherPoint._y;
// Assignment operator returns left side of assignment.
return *this;
}
int main()
{
Point pt1, pt2;
pt1 = pt2;
}
L'argomento fornito è il lato destro dell'espressione. L'operatore restituisce l'oggetto per mantenere il comportamento dell'operatore di assegnazione, che restituisce il valore del lato sinistro una volta completata l'assegnazione. In questo modo è possibile concatenare le assegnazioni, ad esempio:
pt1 = pt2 = pt3;
L'operatore di assegnazione di copia non deve essere confuso con il costruttore di copia. Quest'ultimo viene chiamato durante la costruzione di un nuovo oggetto da uno esistente:
// Copy constructor is called--not overloaded copy assignment operator!
Point pt3 = pt1;
// The previous initialization is similar to the following:
Point pt4(pt1); // Copy constructor call.
Nota
È consigliabile seguire la regola di tre che una classe che definisce un operatore di assegnazione di copia deve anche definire in modo esplicito il costruttore di copia, il distruttore e, a partire da C++11, costruttore di spostamento e operatore di assegnazione di spostamento.