Operatorüberladung in struct

9

Angenommen, ich definiere diese Struktur:

%Vor%

Wie kann ich den Operator + überladen, so dass deklariert,

%Vor%

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?

    
Raptor 20.11.2012, 18:54
quelle

4 Antworten

14

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.

    
James Kanze 20.11.2012, 18:59
quelle
4

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.

    
selalerer 20.11.2012 18:58
quelle
4

So würde ich es machen.

%Vor%     
Robᵩ 20.11.2012 19:10
quelle
3

Dies funktioniert auch:

%Vor%     
shrokmel 10.04.2015 12:43
quelle

Tags und Links