Overloaded "+ Given previous example: Note:overloaded "+NOT member function Definition is "more involved"than simple "add" Requires issues of money type addition Must handle negative/positive values Operator overload definitions generally very simple Just perform "addition"particular to "your"type Copyright006 Pearson Addison-Wesley.All rights reserved. 8-6
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-6 Overloaded "+" ¨ Given previous example: ¨ Note: overloaded "+" NOT member function ¨ Definition is "more involved" than simple "add" ¨ Requires issues of money type addition ¨ Must handle negative/positive values ¨ Operator overload definitions generally very simple ¨ Just perform "addition" particular to "your" type
Money "+Definition: Display 8.1 Operator Overloading ◆ Definition of "+"operator for Money class: 52 const Money operator +(const Money&amount1,const Money&amount2) 53 54 int allCents1 amount1.getCents()+amount1.getDollars()*100; 5 int allCents2 amount2.getCents()+amount2.getDollars()*100; 56 int sumAllCents allCents1 allCents2; 57 int absAllCents abs(sumAllCents);//Money can be negative. 5 int finalDollars absAllCents/100; 59 int finalCents absAllCents%100; 60 if (sumAllCents 0) If the return 61 statements finalDollars =-finalDollars; puzzle you,see 63 finalCents =-finalCents; the tip entitled 6 A Constructor Can Return an 65 return Money(finalDollars,finalCents); Object. 66 2 Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-7
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-7 Money "+" Definition: Display 8.1 Operator Overloading ¨ Definition of "+" operator for Money class:
Overloaded "== Equality operator,= Enables comparison of Money objects ◆Declaration: bool operator ==(const Money&amount1, const Money&amount2): .Returns bool type for true/false equality Again,it's a non-member function (like "+overload) Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-8
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-8 Overloaded "==" ¨ Equality operator, == ¨Enables comparison of Money objects ¨Declaration: bool operator ==(const Money& amount1, const Money& amount2); ¨Returns bool type for true/false equality ¨Again, it’s a non-member function (like "+" overload)
Overloaded "==for Money: Display 8.1 Operator Overloading Definition of "=="operator for Money class: 83 bool operator ==(const Money&amount1,const Money&amount2) 84 85 return ((amount1.getDollars()==amount2.getDollars()) 86 &(amount1.getCents()=amount2.getCents())) 87 Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-9
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-9 Overloaded "==" for Money: Display 8.1 Operator Overloading ¨ Definition of "==" operator for Money class:
Constructors Returning Objects Constructor a "void"function? We "think"that way,but no ◆A"special'"function With special properties ◆CAN return a value! Recall return statement in "+"overload for Money type: return Money(finalDollars,finalCents); ◆Returns an"invocation'"of Money class! So constructor actually "returns"an object! Called an "anonymous object" Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-10
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-10 Constructors Returning Objects ¨ Constructor a "void" function? ¨ We "think" that way, but no ¨ A "special" function ¨ With special properties ¨ CAN return a value! ¨ Recall return statement in "+" overload for Money type: ¨ return Money(finalDollars, finalCents); ¨ Returns an "invocation" of Money class! ¨ So constructor actually "returns" an object! ¨ Called an "anonymous object