1.单继承与多继承
2.菱形继承
3.虚继承---解决菱形继承的二义性和数据冗余的问题
4.虚函数与多态
5.继承体系同名函数的关系
1.单继承与多继承
1.1单继承:
一个子类只有一个直接父类。
class Person
class Student : public Person
class Monitor : public Student
1.2多继承:
一个继承有俩个或俩个以上的直接父类。
class Teacher
class Student
class Assistant : public Studenr ,public Teacher
2.菱形继承
有多继承存在就一定菱形继承存在,菱形继承是由多继承衍生出来的一种特殊的继承体系,也是C++坑的开始。。。
2.1菱形继承模型:
2.2从代码的角度认识菱形继承
2.2.1代码
class Student : public Person
{
protected:
int _num; //学号
};
class Teacher : public Person
{
protected:
int _id; //职工编号
};
class Assistant : public Student,public Teacher
{
protected:
string _majorCourse; //主修课程
};
int main()
{
Assistant a;
//a._name = "xxx";//这里因为a包含了俩分父类对象的_name,所以会产生二义性的问题,造成访问不明确的问题
a.Student::_name = "Linmed";
a.Teacher::_name = "dada";
//使用指定作用域也只是解决了二义性的问题
system("pause");
return 0;
}
2.2.2菱形继承对象模型