Załóżmy zdefiniować tę strukturę:Operator Przeciążenie w struktury
struct Point {
double x, y;
};
Jak mogę przeciążać operatora +
tak, oświadczył
Point a, b, c;
double k;
ekspresję
c = a + b;
plony
c.x = a.x + b.x;
c.y = a.y + b.y;
i wyrażenie
c = a + k;
daje
c.x = a.x + k;
c.y = a.y + k; // ?
będzie przemienne hold nieruchomość za tym ostatnim przypadku? To znaczy, czy należy oddzielnie traktować c = a + k;
i c = k + a;
?
+1 dla postawy Nike – fredoverflow
Dlaczego musimy zadeklarować argumenty Point jako stałe? – Raptor
@ JosuéMolina Abyś mógł przekazać im tymczasowe przedmioty; nie można zainicjować odniesienia niestałego z plikiem tymczasowym. Biorąc pod uwagę prostotę "Punktu", nie ma problemu z przekazywaniem ich bezpośrednio przez wartość, a nie przez odniesienie (w takim przypadku, czy są one "const" czy nie, nie ma znaczenia).Ale wszechobecną konwencją jest przekazywanie typów klas przez odniesienie do const, a kiedy konwencje są naprawdę wszechobecne i nie powodują innych problemów, prawdopodobnie najlepiej ich przestrzegać, choćby dlatego, że ludzie nie zastanawiają się, dlaczego to zrobiliście. różnie. –