1. Make the necessary changes below to indicate that the class LargeAnimal is derived from the base class ZooAnimal. Specify that the base class is public. class ZooAnimal { private: char* name; int cageNumber; int weightDate; int weight; public: ZooAnimal (char*, int, int, int); // constructor function inline ~ZooAnimal () { delete [] name; }; // destructor function void changeWeight (int pounds); char* reptName (); int reptWeight (); int daysSinceLastWeighed (int today); }; class LargeAnimal { private: char* species; float cageMinimumVolume; public: LargeAnimal (char*, int, int, int, float); // constructor function inline ~LargeAnimal () { delete [] species; }; // destructor function float reptCageMinimumVolume (); }; 2. On the cout statement for gonzo (last statement below), since the gonzo object is of type class LargeAnimal, gonzo's species will be returned by the LargeAnimal class' reptName member function. Make the necessary changes so that gonzo's name will be returned instead by the ZooAnimal class' reptName member function. class ZooAnimal { private: char* name; int cageNumber; int weightDate; int weight; public: ZooAnimal (char*, int, int, int); // constructor function inline ~ZooAnimal () { delete [] name; }; // destructor function void changeWeight (int pounds); char* reptName (); int reptWeight (); int daysSinceLastWeighed (int today); }; // -------- member function to return the animal's name char* ZooAnimal::reptName () { return name; } class LargeAnimal : public ZooAnimal { private: char* species; float cageMinimumVolume; public: LargeAnimal (char*, int, int, int, char*, float); // constructor function inline ~LargeAnimal () { delete [] species; }; // destructor function float reptCageMinimumVolume (); char* reptName (); }; // -------- member function to return the large animal's species char* LargeAnimal::reptName () { return species; } // ========== an application to use the LargeAnimal class void main () { ZooAnimal bozo; LargeAnimal gonzo; ... cout << bozo.reptName () << endl; cout << gonzo.reptName () << endl; } 3. Make the necessary changes below so that all calls to the ZooAnimal member function reptName are passed to the matching function in the derived type when called for an object of the derived type. class ZooAnimal { private: char* name; int cageNumber; int weightDate; int weight; public: ZooAnimal (char*, int, int, int); // constructor function inline ~ZooAnimal () { delete [] name; }; // destructor function void changeWeight (int pounds); char* reptName (); int reptWeight (); int daysSinceLastWeighed (int today); }; // -------- member function to return the animal's name char* ZooAnimal::reptName () { return name; } class LargeAnimal : public ZooAnimal { private: char* species; float cageMinimumVolume; public: LargeAnimal (char*, int, int, int, char*, float); // constructor function inline ~LargeAnimal () { delete [] species; }; // destructor function float reptCageMinimumVolume (); char* reptName (); }; // -------- member function to return the large animal's species char* LargeAnimal::reptName () { return species; } 4. Make the necessary changes to indicate that the class LargeAnimal is a derived class of the base classes ZooAnimal and Mammal (in that order). Specify that the base classes are public. class ZooAnimal { protected: char* name; int cageNumber; int weightDate; int weight; public: ZooAnimal (char*, int, int, int); // constructor function inline ~ZooAnimal () { delete [] name; }; // destructor function void changeWeight (int pounds); char* reptName (); int reptWeight (); int daysSinceLastWeighed (int today); }; class Mammal { protected: float minimumVolume; int minimumWeight; public: Mammal (float, int); // constructor function inline ~Mammal () {}; // destructor function float reptminimumVolume (); int reptminimumWeight (); }; class LargeAnimal { protected: char* species; float cageMinimumVolume; public: LargeAnimal (char*, int, int, int, float, float, int); // constructor inline ~LargeAnimal () { delete [] species; }; // destructor function float reptCageMinimumVolume (); }; 5. In the reptCageMinimumVolume function below, the reference to the data name weight is ambiguous. Make the necessary changes to indicate that the weight to be used is the one from the Mammal base class. class ZooAnimal { protected: char* name; int cageNumber; int weightDate; int weight; public: ZooAnimal (char*, int, int, int); // constructor function inline ~ZooAnimal () { delete [] name; }; // destructor function void changeWeight (int pounds); char* reptName (); int reptWeight (); int daysSinceLastWeighed (int today); }; class Mammal { protected: float minimumVolume; int weight; public: Mammal (float, int); // constructor function inline ~Mammal () {}; // destructor function float reptminimumVolume (); int reptWeight (); }; class LargeAnimal : public ZooAnimal, public Mammal { protected: char* species; float cageMinimumVolume; public: LargeAnimal (char*, int, int, int, float, float, int); // constructor inline ~LargeAnimal () { delete [] species; }; // destructor function float reptCageMinimumVolume (); }; // -------- member function to return the minimum cage volume // -------- needed for this large animal float LargeAnimal::reptCageMinimumVolume () { if (weight < 500) return cageMinimumVolume; else return reptminimumVolume (); } 6. In the reptCageMinimumVolume function below, the reference to the function name reptWeight is ambiguous. Make the necessary changes to indicate that the reptWeight function to be used is the one from the ZooAnimal base class. class ZooAnimal { protected: char* name; int cageNumber; int weightDate; int weight; public: ZooAnimal (char*, int, int, int); // constructor function inline ~ZooAnimal () { delete [] name; }; // destructor function void changeWeight (int pounds); char* reptName (); int reptWeight (); int daysSinceLastWeighed (int today); }; class Mammal { protected: float minimumVolume; int weight; public: Mammal (float, int); // constructor function inline ~Mammal () {}; // destructor function float reptminimumVolume (); int reptWeight (); }; class LargeAnimal : public ZooAnimal, public Mammal { protected: char* species; float cageMinimumVolume; public: LargeAnimal (char*, int, int, int, float, float, int); // constructor inline ~LargeAnimal () { delete [] species; }; // destructor function float reptCageMinimumVolume (); }; // -------- member function to return the minimum cage volume // -------- needed for this large animal float LargeAnimal::reptCageMinimumVolume () { if (Mammal::weight < 500) return cageMinimumVolume; else return reptWeight (); }