The definition of the class Person is below. Implementation of the class is part of this programming project. class Person { public: Person(); Person(string theName); string getName() const; friend istream & operator>> (istream &in, Person &personObject); friend ostream & operator<< (ostream &out, Person &personObject); private: string name; }; Give the definition of three classes, Patient, Doctor and Billing whose objects are records for a clinic. Doctor will be derived from the class Person. Doctor will contain the doctor's name (inherited from Person). Patient will be derived from the class Person. A Patient record has the patient's name (inherited from Person), and a Doctor object. A Billing object will contain a Patient object, A Doctor object and an amount due of type double. Be sure your classes contain a good complement of constructors and overloaded input and output. Write a driver program to test all your methods. Then write a test program that creates at least two patients, two doctors, two Billing records and then prints out the total income from the Billing records.