// Fig. 17.4: date1.cpp // Member function definitions for Date class. #include using std::cout; using std::endl; #include "date1.h" // Constructor: Confirm proper value for month; // call utility function checkDay to confirm proper // value for day. Date::Date( int mn, int dy, int yr ) { if ( mn > 0 && mn <= 12 ) // validate the month month = mn; else { month = 1; cout << "Month " << mn << " invalid. Set to month 1.\n"; } // end else year = yr; // should validate yr day = checkDay( dy ); // validate the day cout << "Date object constructor for date "; print(); // interesting: a print with no arguments cout << endl; } // end Date constructor // Print Date object in form month/day/year void Date::print() const { cout << month << '/' << day << '/' << year; } // Destructor: provided to confirm destruction order Date::~Date() { cout << "Date object destructor for date "; print(); cout << endl; } // end Date destructor // Utility function to confirm proper day value // based on month and year. // Is the year 2000 a leap year? int Date::checkDay( int testDay ) { static const int daysPerMonth[ 13 ] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if ( testDay > 0 && testDay <= daysPerMonth[ month ] ) return testDay; if ( month == 2 && // February: Check for leap year testDay == 29 && ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ) ) return testDay; cout << "Day " << testDay << " invalid. Set to day 1.\n"; return 1; // leave object in consistent state if bad value } // end function checkDay /************************************************************************** * (C) Copyright 1992-2004 by Deitel & Associates, Inc. and * * Pearson Education, Inc. All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * *************************************************************************/