继承分为:单继承、多继承和菱形继承
单继承:一个子类只有一个直接父类时称这个继承关系为单继承。
多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承。
菱形继承:菱形继承是多继承的一种特殊情况。有两个子类继承同一个父类,而又有子类同时继承这两个子类。
通过上面的图可以看出菱形继承有数据冗余和二义性的问题,在Assistant的对象中Person成员会有两份。
以学生老师和课程三个关系为例
class Person
{
public:
string _name; // 姓名
};
class Student : public Person
{
protected :
int _num ; //学号
};
class Teacher : public Person
{
protected :
int _id ;// 职工编号
};
class Assistant : public Student, public Teacher
{
protected :
str