Listing 9 Adds stream I/O to the Date class

// date7.h

class ostream;

class Date
{
   int month;
   int day;
   int year;

public:
   // Constructors
   Date()
     {month = day = year = 0;}
   Date(int m, int d, int y)
     {month = m; day = d; year = y;}

   // Accessor Functions
   int get_month() const
     {return month;}
   int get_day() const
     {return day;}
   int get_year() const
     {return year;}

   Date operator-(const Date& d2) const;
   Date& operator-()
     {month= -month; day = -day; year = -year;
      return *this;}

   int compare(const Date&) const;

   // Relational operators
   int operator<(const Date& d2) const
     {return compare(d2) < 0;}
   int operator<=(const Date& d2) const
     {return compare(d2) <= 0;)
   int operator>(const Date& d2) const
     {return compare(d2) > 0;}
   int operator>=(const Date& d2) const
     {return compare(d2) >= 0;}
   int operator==(const Date& d2) const
     {return compare(d2) == 0;}
   int operator!=(const Date& d2) const
     {return compare(d2) != 0)

   // I/O operators
   friend ostream& operator<<(ostream&, const Date&);
   friend istream& operator>>(istream&, Date&);
};

// End of File