Surcharge des opérateurs : bonnes pratiques
operator=
#
Membre obligatoire
Le standard C++ exige que l’operator= soit défini comme une fonction membre de la classe.
Il doit retourner *this pour permettre le chaînage (a = b = c).
Il doit aussi empêcher l’auto-affectation. Sans cette condition, alors on a un UB (Undefined Behavior).
NamedPoint& NamedPoint::operator=(const NamedPoint& p)
{
if (this == &p)
{
return *this;
}
...
return *this;
}📝 À NOTER
Cet opérateur est obligatoire pour les classes qui gèrent des ressources dynamiques (pointeurs bruts, allocations).
Dans le cas contraire, alors
operator= = default est suffisant.operator<< et operator>>
#
Non-membres obligatoires
...