【C++】继承(二)多继承,虚函数,虚继承

本文详细介绍了C++中的继承概念,包括单继承与多继承,重点讨论了菱形继承及其导致的二义性和数据冗余问题。通过虚继承的实现方式,解释了如何解决这些问题。同时,探讨了虚函数与多态性,强调了虚函数在实现多态中的关键作用。最后,阐述了继承体系中同名函数的关系,包括重载、重写和重定义的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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菱形继承对象模型


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值