home *** CD-ROM | disk | FTP | other *** search
- // Chap21_1.cpp
- class USDollar
- {
- friend USDollar operator+(USDollar&, USDollar&);
- friend USDollar& operator++(USDollar&);
- public:
- USDollar(unsigned int d, unsigned int c);
- protected:
- unsigned int dollars;
- unsigned int cents;
- };
-
- USDollar::USDollar(unsigned int d, unsigned int c)
-
- {
- dollars = d;
- cents = c;
- while (cents >= 100) {
- dollars++;
- cents -= 100;
- }
- }
-
- //operator+ - add s1 to s2 and return the result
- // in a new object
- USDollar operator+(USDollar& s1, USDollar& s2)
- {
- unsigned int cents = s1.cents + s2.cents;
- unsigned int dollars = s1.dollars + s2.dollars;
- USDollar d(dollars, cents);
- return d;
- }
-
- //operator++ - increment the specified argument;
- // change the value of the provided object
- USDollar& operator++(USDollar& s)
- {
- s.cents++;
- if (s.cents >= 100)
- {
- s.cents -= 100;
- s.dollars++;
- }
- return s;
- }
-
- int main()
- {
- USDollar d1(1, 60);
- USDollar d2(2, 50);
- USDollar d3(0, 0);
- d3 = d1 + d2; //overloaded operators are straightforward in use
- ++d3;
- return 0;
- }
-