Hey, je voudrais connaître la différence entre ces deux définitions de l'opérateur:surcharge d'opérateur en C++ (avec et sans ami)
1:
class Rational{
//...
public:
//...
Rational operator -() const{ return Rational(-t,b);}
//...
};
2:
class Rational{
//...
public:
//...
friend Rational operator -(const Rational& v) {return Rational(-t,b);}
//...
};
pour autant que je comprenne, pour l'utilisation de:
Rational s = -r
r.operator-() // should happen
voudrais une explication pour la différence, merci!
Ces déclarations sont-elles dans la classe? –
Votre # 2 n'a même pas besoin d'être un ami - il n'accède à aucun membre privé de Rational. Il peut (et devrait) être déclaré/défini entièrement en dehors de la classe. –