#include #include using namespace std; class Birthday { public: // Constructors Birthday(); Birthday(int y, int m, int d); int get_year() const; int get_month() const; int get_date() const; void set_year(int y); void set_month(int m); void set_date(int d); void print() const; friend bool equal(const Birthday& bd1, const Birthday& bd2); friend int years_apart(const Birthday& bd1, const Birthday& bd2); friend int operator -(const Birthday& bd1, const Birthday& bd2); friend ostream& operator <<(ostream& outs, const Birthday& bd); friend istream& operator >>(istream& ins, Birthday& bd); private: int year, month, date; }; Birthday::Birthday() : year(0), month(0), date(0) { cout << "Default constructor called!" << endl; } Birthday::Birthday(int y, int m, int d) : year(y), month(m), date(d) { // Empty body } int Birthday::get_year() const { return year; } int Birthday::get_month() const { return month; } int Birthday::get_date() const { return date; } void Birthday::set_year(int y) { year = y; } void Birthday::set_month(int m) { month = m; } void Birthday::set_date(int d) { date = d; } void Birthday::print() const { cout << month << "/" << date << "/" << year << endl; } int main() { Birthday bd1; // call default constructor Birthday bd2(1990, 9, 2); // call constructor Birthday bd3(2001, 5, 8); // call constructor bd1.print(); bd2.print(); bd3.print(); cout << years_apart(bd2, bd3) << endl; cout << bd2 - bd3 << endl; cout << bd1 << ", " << bd2 << ", " << bd3 << endl; cout << endl; cout << "Enter two birthdays: "; cin >> bd1 >> bd2; cout << bd1 << ", " << bd2 << endl; } bool equal(const Birthday& bd1, const Birthday& bd2) { return (bd1.year == bd2.year) && (bd1.month == bd2.month) && (bd1.date == bd2.date); } int years_apart(const Birthday& bd1, const Birthday& bd2) { return abs(bd1.year - bd2.year); } int operator -(const Birthday& bd1, const Birthday& bd2) { return abs(bd1.year - bd2.year); } ostream& operator <<(ostream& outs, const Birthday& bd) { outs << bd.month << "/" << bd.date << "/" << bd.year; return outs; } istream& operator >>(istream& ins, Birthday& bd) { int y, m, d; char ch; ins >> ch; if (ch == '{') { ins >> y; ins >> ch; if (ch == ',') { ins >> m; ins >> ch; if (ch == ',') { ins >> d; ins >> ch; if (ch == '}') { bd.year = y; bd.month = m; bd.date = d; } } } } return ins; }