This exercise defines a Party class to store the location and an attendee list of a party along with the operations performed on the party location and attendee list (e.g., get/change party location and get/change attendee). The Party class is partially completed. Please finish the following remaining tasks. (1) Complete the Party class with a constructor with parameters, a copy constructor, a destructor, and an overloaded assignment operator =). • The overloaded constructor takes two parameters as input, a string to specify the party location, and an integer to specify the maximum number of attendees. If the input integer is not positive, set the maximum number of attendees to be 10. Set the current number of attendees to be zero, and dynamically created the array for the list of attendees with the maximum number of attendees • The copy constructor will copy the list of attendees and other attributes using deep copy • The overloaded copy assignment operator (5) will copy the list of attendees and other attributes using deep copy • The destructor should properly release the memory dynamically allocated for the list of attendees (2) Add an overloaded operator + to add an attendee to the party. You should check whether you reach the maximum number of attendees or not. If not, add this attendee to the list and increase the number of current attendees by 1. Otherwise, output a message "The party is already full!" without adding the attendee. (3) Add an overloaded operator > to determine which party is bigger (based on number of attendees). If the party on the left hand size is bigger/larger, return true, otherwise, return false. There is no need to modify the main() function in this exercise. All test cases are unit tests Current file: main.cpp Load default template... 1 #include 2 3 using namespace std; 4 5 #include "Party.h" 6 7 int main() 8 { 9 return; 10 } Current file: Party.h Load default template... 1 #ifndef PARTY_H 2 #define PARTY_H 4 class Party 5 { 6 private: 7 string location; string *attendees; 9 int maxAttendees; 10 int numAttendees; 11 12 public: 13 Party(); 14 Party (string l, int num); //Constructor 15 Party (/*parameters*/); //Copy constructor 16 Party& operator=(/*parameters*/); 17 //TODO: Add destructor 18 //TODO: Add operator + to add a person to the party 19 //TODO: Add operator > to compare two parties 20 21 void changeAttendeeAt(string name, int pos); 22 void print(); 23 string getAttendeeAt(int pos); 24 int getMaxAttendees() const; 25 int getNumAttendees() const; 26 string getLocation() const; 27 void setLocation(string); 28 }; 29 30 #endif Current file: Party.cpp Load default template... 1 #include 2 #include 3 4 using namespace std; 5 6 #include "Party.h" 7 8 Party::Party() 9 { 10 //Default: 10 attendees, location = home 11 location = "Home"; 12 maxAttendees = 10; 13 numAttendees = 0; 14 attendees = new string[maxAttendees]; 15} 16 17 //Define constructor with two parameters 18 //If the input integer is not positive, set maxAttendees = 10 19 20 21 //Define the copy constructor 22 23 //Define the overloaded copy assignment operator (=) 24 25 26 //Define the overloaded operator (+) to add an attendee 27 28 29 //Define the overloaded operator (>) to compare two parties 30 31 32 //Add destructor 33 32 //Add destructor 33 34 35 //The following functions are provided 36 //Do not change 37 38 void Party::changeAttendeeAt(string name, int pos) 39 { 40 if(pos >=0 && pos 0) 49 { 50 cout << "Attendees list:\n"; 51 for(int i = 0; i=0 && pos