J'essaie quelque chose comme ceci:Les opérateurs d'affectation C++ peuvent-ils être des fonctions libres?
Foo & operator=(Foo & to, const Bar &from);
Mais je reçois cette erreur:
E2239 'operator =(Foo &, const Bar &)' must be a member function
Y at-il des limites sur lesquelles les opérateurs peuvent/ne peuvent pas être définies comme des fonctions libres, et si oui , Pourquoi?
Autres raisons de le faire? Il est logique que l'opérateur = soit une fonction membre, après tout, c'est l'une des trois fonctions de contrôle de copie (à savoir le constructeur de copie, l'opérateur = et le destructeur). Mais pourquoi pour les autres? – zoujyjs
Les opérateurs @zoujyjs doivent avoir accès aux variables membres internes (éventuellement privées). Les fonctions gratuites n'auront pas cet accès. – iheanyi
@iheanyi Mais nous pouvons définir la fonction libre comme un ami de la classe –