C ++: Mehrfachvererbung mit Polymorphismus
(entschuldigen Sie die noob Frage im Voraus)
Ich habe 4 Klassen:
class Person {};
class Student : public Person {};
class Employee : public Person {};
class StudentEmployee : public Student, public Employee {};
Im WesentlichenPerson
ist die Basisklasse, die von beiden direkt untergeordnet wirdStudent
undEmployee
. StudentEmployee
verwendet Mehrfachvererbung, um beide @ -Klassen zu unterteileStudent
undEmployee
.
Person pat = Person("Pat");
Student sam = Student("Sam");
Employee em = Employee("Emily");
StudentEmployee sen = StudentEmployee("Sienna");
Person ppl[3] = {pat, sam, em};
//compile time error: ambiguous base class
//Person ppl[4] = {pat, sam, em, sen};
Wenn ich ein Array von @ benutPerson
, die Basisklasse, kann ich @ setzPerson
und alle seine Unterklassen innerhalb dieses Arrays. Ausser fürStudentEmployee
, aufgrund der mehrdeutigen Basisklasse.
Gegeben, dassStudentEmployee
hat garantiert alle Methoden und Attribute vonPerson
, istStudentEmployee
als Unterklasse von Person?
Pros
EDIT: Diese Frage ist präventiv NICHT mit einer der folgenden Fragen identisch:
polymorphismus bezieht sich auf Vererbung
Vererbung, die Polymorphismus in C ++ durcheinander bringt?