Recode the copy constructor using const as described in this sec- tion. Replace
ID: 3558262 • 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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.