TeachingAssistant* fred = new TeachingAssistant(); Student* s = fred; // Legal, because TeachingAssistant is-a Student Person* p1 = s; Employee* e = fred; Person* p2 = e; Person* p3 = fred; // Legal if virtual inheritance used, otherwise error