C++-manual | ||
---|---|---|
Förutgående | Kapitel 21. Överlagring av operatorer | Nästa |
Överlagring av den binära operatorn - är i princip en liknande operation som att överlagra + (se ovan). Enda skillnaden är hur de olika komponenterna kombineras. I detta fall subtraheras komponenterna från varandra.
Figur 21-2. Vektorsubtraktion
Vi kan definiera den överlagrade operatorn på följande sätt:
// prototyp Vector operator- (const Vector & V) const; // implementation Vector Vector::operator- (const Vector & V) const { Vector Result; // sätt den nya vektorns värden Result.setX ( m_X - V.m_X ); Result.setY ( m_Y - V.m_Y ); Result.setZ ( m_Z - V.m_Z ); // returnera den nya vektorn return Result; } |
Vi kan nu skriva kod som t.ex. följande:
Vector V1 ( 1, 2, 3 ); Vector V2 ( 6, 5, 4 ); // subtrahera vektorerna Vector Result = V1 - V2; |
Båda operatorerna + och - kan förstås kombineras ihop i diverse uttryck. Dessa evalueras enligt normal precedensordning, d.v.s. från vänster till höger om inte parenteser används för att indikera annan ordning.
Funderar vi lite närmare på operatorn - märker vi snabbt att den inte enbart fungerar som en binär operator för subtraktion, utan kan även användas unärt, d.v.s. men endast en parameter. I detta fall är det frågan om en negation av ett värde, eller i vårt fall, en vektor. Vi kan överlagra även den unära versionen av - i klassen Vector:
// prototyp Vector operator- () const; // implementation Vector Vector::operator- () const { Vector Result; // sätt den nya vektorns värden Result.setX ( -m_X ); Result.setY ( -m_Y ); Result.setZ ( -m_Z ); // returnera den nya vektorn return Result; } |
Metoden skapar en ny vektor som har ursprungsvektorns alla komponenter negerade. Vi får två metoder som heter operator-, men det är inget problem, eftersom de skiljer sig i vilka parametrar de accepterar, och kompilatorn vet således vilken metod som skall användas i olika situationer. Vi kan nu använda negationen i t.ex. följande kod:
Vector V1 ( 1, 2, 3 ); // negera vektorn Vector Result = -V1; |
Förutgående | Hem | Nästa |
Överlagring av operatorn + | Upp | Överlagring och friends |