Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Recode the copy constructor using const as described in this sec- tion. Replace

ID: 3558261 • Letter: R

Question

Recode the copy constructor using const as described in this sec- tion. Replace the Display_Number() and Display_Guest() methods by the methods Get_Number() and Get_Guest(), respectively, so that each returns a pointer to the corresponding instance variable. Recode main() as necessary. Compile, execute, and test the resulting program. based off this original code

//define_class.cpp
#include<iostream>
#include<string>
using namespace std;
//class declatration
class HotelRoom
{
private: string roomNumber;
int capacity;
int occupancy;
double rate;
public:
//constructor with three parameters
HotelRoom(string num, int count, double rent)
{
roomNumber = num;
capacity = count;
rate = rent;
occupancy = 0;
}
};
int main()
{
//create instance of class
HotelRoom room1("F103", 2, 800);
//pause system for a while
system("pause");
return 0;
}

Explanation / Answer

#include <iostream>

#include <iomanip>

#include <cmath>


using namespace std;


class HotelRoom

{

protected:
   int k;
// room num
   int occup_stat;
   double daily_rt;


   // guest and daily rate will be added here in weeks ahead

public:

   HotelRoom(int i = 0, int occup = 0, double rate = 89.00); // one argument constructor for now
  
HotelRoom(const HotelRoom&); //copy constructor
  
~HotelRoom(); //deconstructor


};


HotelRoom::HotelRoom(int i, int occup, double rate) : k(i)

{

   cout <<endl;

   cout<< "HotelRoom room number: "
       <<k<< endl;

}


HotelRoom::HotelRoom(const HotelRoom& room_r) :k(room_r.k)

{

   cout<<endl;

   cout<<"(HotelRoom copy constructor executed)"<<endl;

}

HotelRoom::~HotelRoom()

{

   cout <<endl;
cout<<"(HotelRoom destructor executed)"<<endl;


}


class GuestRoom : public HotelRoom

{

protected:

   int capacity;

   int status;

   int days;

   double gbill;


public:

   GuestRoom(int c = 0, int s = 0, int d = 0);

   GuestRoom(const GuestRoom &);

   ~GuestRoom();

   double Calculate_Bill();

   void Display();


};


GuestRoom::GuestRoom(int c, int s, int d) : HotelRoom(k = 123), capacity(c), status(s), days(d)

{

   cout<<endl;

   cout<<"**GuestRoom constructor executed**"<<endl<<endl;
   cout <<"Maximum number of guest per room: "<<capacity<<endl;

       cout <<"Number of guest occupying room: "<<status<<endl;

       cout <<"Days that room is going to be occupied: "<<days<<endl;

}

GuestRoom::GuestRoom(const GuestRoom & hroom_r)
   :HotelRoom(hroom_r), capacity(hroom_r.capacity)

{

   cout<<endl;

   cout<<"**GuestRoom copy constructor executed**"
       <<endl;

}

GuestRoom::~GuestRoom()

{

   cout<<endl;

   cout<< "**GuestRoom destructor executed**"<<endl;

}

double GuestRoom::Calculate_Bill()
{

  
   gbill = occup_stat*days*daily_rt;


   return gbill;

}


void GuestRoom::Display()
{

  
   cout<< setprecision(2)
       <<setiosflags(ios::fixed)
       <<setiosflags(ios::showpoint);

   cout<<endl<<endl<<endl;

   cout<<"Daily Rate: "<<daily_rt<<endl;

   cout<<"Days Occupying: "<<days<<endl;

   cout<<"Occupancy Status: "<<occup_stat<<endl;

   cout<<"Guest bill: "<<gbill<<endl;

}


class MeetingRoom : public HotelRoom
{

protected:

   int seats;

   int status;

   double mbill;
  


public:

   MeetingRoom(int s = 0, int st = 0);

   MeetingRoom(const MeetingRoom &);

   ~MeetingRoom();

   double Calculate_Bill();

   void Display();


};


MeetingRoom::MeetingRoom(int s, int st) : HotelRoom(k = 123), seats(s), status(st)

{

   cout<<endl;

   cout<<"Constructor Executed "<<seats<<endl;


}


MeetingRoom::MeetingRoom(const MeetingRoom & mroom_r)
   :HotelRoom(mroom_r), seats(mroom_r.seats)

{

   cout<<endl;

   cout<<"~~MeetingRoom copy constructor executed~~"
       <<endl;

}

MeetingRoom::~MeetingRoom()

{

   cout<<endl;

   cout<< "~~MeetingRoom destructor executed~~"
       <<endl;

}

double MeetingRoom::Calculate_Bill()

{

      
mbill = seats * 10.00 + 500.00;
   return mbill;

}


void MeetingRoom::Display()

{

  
   cout<< setprecision(2)
       <<setiosflags(ios::fixed)
       <<setiosflags(ios::showpoint);


  
   cout<<endl<<endl<<"Meeting Room Information"<<endl<<endl;


   cout<<"Seats in the Meeting Room: "<<seats<<endl;

   cout<<"Status of the Meeting Room:"<<status<<endl;

   cout<<"Bill for renting the room: "<<mbill<<endl<<endl<<endl;

}

int main()

{

  

   HotelRoom room_object1(123, 4, 89.00);

   GuestRoom groom_object1(5,3,4);

   GuestRoom groom_object2 = groom_object1;

   MeetingRoom mroom_object1(100,1);

   MeetingRoom mroom_object2 = mroom_object1;

   cout <<endl;

mroom_object1.Calculate_Bill();

   mroom_object1.MeetingRoom::Display();

   groom_object1.Calculate_Bill();

   groom_object1.GuestRoom::Display();

   system("PAUSE");

   return 0;

}