Opérateur surchargé dans struct
Suppose que j'définir cette structure:
struct Point {
double x, y;
};
Comment puis-je surcharge le +
de l'opérateur, de sorte que, a déclaré,
Point a, b, c;
double k;
l'expression
c = a + b;
rendements
c.x = a.x + b.x;
c.y = a.y + b.y;
et l'expression
c = a + k;
rendements
c.x = a.x + k;
c.y = a.y + k; //?
Sera la commutativité tenir pour le dernier cas? C'est, ne c = a + k;
et c = k + a;
être traitées séparément?
source d'informationauteur Raptor
Vous devez vous connecter pour publier un commentaire.
Just do it:
En ce qui concerne votre dernière question, le compilateur fait pas
hypothèses à propos de ce que votre opérateur n'. (Rappelez-vous, la
+
opérateur surstd::string
est pas commutatif.) Si vousà fournir à la fois les surcharges.
Alternativement, vous pouvez fournir une conversion implicite de
double
àPoint
(en ayant une conversion de constructeur enPoint
). Dans ce cas, la première surcharge ci-dessus va gérertous les trois cas.
En C++ il y a une seule différence entre une structure et une classe: dans une struct la visibilité par défaut est public, alors que dans une classe, il est privé.
Autre que celui que vous pouvez faire ce que vous feriez dans une classe dans une struct et il aura exactement le même aspect.
Écrire la surcharge d'opérateur dans une struct comme vous le feriez dans une classe.
Ici est de savoir comment j'allais le faire.
Cela fonctionnera également: