Source of testrem4.cpp


  1: // Filename: TESTREM4.CPP
  2: // Purpose:  Tests copy constructor in three different situations

  4: #include <iostream>
  5: using namespace std;

  7: #include "REM4.H"
  8: #include "PAUSE.H"

 10: void DisplayReminderWithBanner(Reminder r)
 11: // Pre:  "r" is initialized
 12: // Post: "r" is displayed as before, but with *'s above and ='s below.
 13: {
 14:     cout << "*****************************************" << endl;
 15:     r.Display();  cout << endl;
 16:     cout << "=========================================" << endl;
 17: }

 19: Reminder Halloween()
 20: // Pre:  none
 21: // Post: A date of October 31, 2000, with message "Boo!" is returned.
 22: {
 23:     Reminder r(20001031, "Boo!");
 24:     return r;
 25: }

 27: int main()
 28: {
 29:     cout << endl;

 31:     Reminder r(20000315, "Ides of March");
 32:     r.Display();  cout << endl;  Pause(0);

 34:     Reminder r1;
 35:     // Overloaded assignment operator = invoked here because
 36:     // object r is being assigned to object r1:
 37:     r1 = r;
 38:     r1.Display();  cout << endl;  Pause(0);

 40:     // Copy constructor invoked here because object r2
 41:     // is being initialized with a copy of r:
 42:     Reminder r2 = r;
 43:     r2.Display();  cout << endl;  Pause(0);

 45:     // Copy constructor invoked here because (once again)
 46:     // an object r3 is being initialized with a copy of r:
 47:     Reminder r3(r);
 48:     r3.Display();  cout << endl;  Pause(0);

 50:     // Copy constructor invoked here because object r3 is being
 51:     // passed by value to the formal parameter r of DisplayReminderWithBanner:
 52:     DisplayReminderWithBanner(r3);  cout << endl;  Pause(0);

 54:     // Copy constructor invoked here because r is a local object
 55:     // in the body of the Halloween function and is being returned:
 56:     Halloween().Display();  cout << endl;  Pause(0);

 58:     return 0;
 59: }