J'ai une question liée à l'implémentation de l'opérateur =
en C++. Si je me souviens bien, il y a deux façons de mettre en œuvre =
dans une classe: on est à la surcharge =
explicitement, et par exemple:où dois-je implémenter l'opérateur = en C++
class ABC
{
public:
int a;
int b;
ABC& operator = (const ABC &other)
{
this->a = other.a;
this->b = other.b;
}
}
et l'autre est de définir =
implicitement. Par exemple:
class ABC
{
public:
int a;
int b;
ABC(const ABC &other)
{
a = other.a;
b = other.b;
}
}
Ma question est la suivante:
1) Est-il nécessaire de mettre en œuvre =
explicitement et implicitement? 2) Si un seul d'entre eux est nécessaire, quelle implémentation est préférée?
Merci!
Ce sont deux choses différentes. Le premier exemple a un opérateur d'affectation. Le second, un constructeur de copie. Cela ne fait aucune différence car les versions générées par le compilateur sont assez bonnes. – juanchopanza
Vous voudrez peut-être lire sur [la règle de trois] (http://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29). –