Angenommen, ich definiere diese Struktur:
%Vor% Wie kann ich den Operator +
überladen, so dass deklariert,
der Ausdruck
%Vor%ergibt
%Vor%und der Ausdruck
%Vor%ergibt
%Vor% Wird die kommutative Eigenschaft für den letzteren Fall gelten? Das heißt, müssen c = a + k;
und c = k + a;
separat behandelt werden?
Mach es einfach:
%Vor% In Bezug auf Ihre letzte Frage macht der Compiler no
Annahmen bezüglich was Ihr Operator tut. (Denken Sie daran, die
+
operator auf std::string
ist nicht kommutativ.) Also du
müssen beide Überladungen bereitstellen.
Alternativ können Sie eine implizite Konvertierung von bereitstellen
double
bis Point
(indem ein Konvertierungskonstruktor in
%Code%). In diesem Fall wird die erste Überladung behandelt
alle drei Fälle.
In C ++ gibt es nur einen Unterschied zwischen einer Struktur und einer Klasse: In einer Struktur ist die Standardsichtbarkeit öffentlich, während sie in einer Klasse privat ist.
Abgesehen davon können Sie alles tun, was Sie in einer Klasse in einer Struktur tun würden, und es wird genauso aussehen.
Schreib den Operator in einer Struktur wie in einer Klasse überladen.
Tags und Links c++