C ++: множественное наследование с полиморфизмом
(простите заранее вопрос нуба)
У меня 4 класса:
class Person {};
class Student : public Person {};
class Employee : public Person {};
class StudentEmployee : public Student, public Employee {};
по существуPerson
является базовым классом, которые непосредственно подклассыStudent
а такжеEmployee
. StudentEmployee
использует множественное наследование для подкласса обоихStudent
а такжеEmployee
.
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};
Когда я использую массивPerson
Базовый класс, я могу поставитьPerson
и все его подклассы внутри этого массива. За исключениемStudentEmployee
, учитывая причину неоднозначности базового класса.
При условииStudentEmployee
гарантированно имеет все методы и атрибутыPerson
, являетсяStudentEmployee
считается подклассом человека?
ура
РЕДАКТИРОВАТЬ: преимущественно, этот вопрос не совпадает с одним из следующих:
полиморфизм относится к наследованию
Наследование, испорченное полиморфизмом в C ++?