1: // Filename: DATE4.CPP
2: // Purpose: Implementation file corresponding to DATE4.H.
4: #include "date4.h"
5: #include <iostream>
6: #include <string.h> // For strcpy() and strlen()
8: // Private members of class:
9: // int month;
10: // int day;
11: // int year;
12: // char* messagePtr;
15: //******************************************************************
16: Date::Date()
17: {
18: month = 1;
19: day = 1;
20: year = 1970;
21: messagePtr = new char[strlen("No message ...") + 1];
22: strcpy(messagePtr, "No message ...");
23: }
26: //******************************************************************
27: Date::Date(/* in */ int newMonth,
28: /* in */ int newDay,
29: /* in */ int newYear,
30: /* in */ const char* messageString)
31: {
32: month = newMonth;
33: day = newDay;
34: year = newYear;
35: messagePtr = new char[strlen(messageString) + 1];
36: strcpy(messagePtr, messageString);
37: }
40: //******************************************************************
41: void Date::Display() const
42: {
43: static char monthString[12][10] =
44: {
45: "January", "February", "March", "April", "May", "June",
46: "July", "August", "September", "October", "November",
47: "December"
48: };
50: cout << monthString[month-1] << ' ' << day << ", " << year << endl
51: << messagePtr << endl;
52: }
55: //******************************************************************
56: Date::Date(const Date& otherDate)
57: {
58: month = otherDate.month;
59: day = otherDate.day;
60: year = otherDate.year;
61: messagePtr = new char[strlen(otherDate.messagePtr) + 1];
62: strcpy(messagePtr, otherDate.messagePtr);
63: cout << "Now in copy constructor for Date ..." << endl;
64: Pause();
65: }
68: //******************************************************************
69: void Date::operator=(const Date& rightSide)
70: {
71: month = rightSide.month;
72: day = rightSide.day;
73: year = rightSide.year;
74: int newLength = strlen(rightSide.messagePtr);
75: if (newLength > strlen(messagePtr))
76: {
77: delete [] messagePtr;
78: messagePtr = new char[newLength+1];
79: }
80: strcpy(messagePtr, rightSide.messagePtr);
81: cout << "Now in overloaded = operator for Date ..." << endl;
82: Pause();
83: }
86: //******************************************************************
87: Date::~Date()
88: {
89: delete [] messagePtr;
90: cout << "Now in the destructor for class Date ... " << endl;
91: Pause(); cout << endl;
92: }
95: //******************************************************************
96: void Date::InsertXX()
97: {
98: messagePtr[0] = 'X';
99: messagePtr[1] = 'X';
100: }