c++ 继承初识

本文介绍了C++中的继承概念,通过实例展示了如何使用继承来减少代码冗余。详细讨论了子类在继承时默认构造函数、拷贝构造函数、赋值运算符重载和析构函数的区别。此外,还探讨了多继承和虚继承,解释了虚继承如何解决数据二义性,并通过内存窗口展示了虚继承后的内存分布。

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

继承的概念

在生活中,如果一对夫妻生下属于他们的宝宝,那么这个宝宝一定会继承他的父母身上的一些特征,本次我们说的继承和生活中的继承其实是相同的,也就是说如果一个类继承另一个类,那么当前类就具备了被继承的类的所有属性,具体如下:
在这里插入图片描述
此时我们定义了一个Person类,然后又定义了一个Student类来继承Person类,这时Student类就会多出一个保护属性的成员name,所以通过继承方式,我们可以将每个类中相同的属性单独提出来当做基类(就是父类),这样就可以避免冗余的代码,本质上就是对代码的复用,使程序看起来更简洁明了。

那在这里我们又会注意到,我们在父类中使用的是protected属性,也就是保护属性,而在继承关系表达式中我们使用的是public属性,那这样写为什么就可以继承到Person类中的protected属性的变量呢??
在这里插入图片描述
这里我们就要提到protected,public和private在继承中的权限关系了,在继承中public的权限是最大的,如果不是继承的话protected的权限可以近似看作private,都不可以在类外进行访问,但是在继承这里,这两个权限符就要做一下比较了,protected的权限比private的权限大,而在我们继承的时候,要将我们父类中的变量的权限和继承表达式中的权限进行比较,比如上面Person类中protected属性的变量比继承表达式中的public权限小,所以可以被继承,如上面的图我们就可看出来只要父类中变量的权限符比子类继承表达式中的权限符小,就可以被子类继承,比如
在这里插入图片描述
如果是上图这种方式就只能将Person类中的private属性的变量继承过来。
在我们之前的图片中可以发现,父类中private属性的变量不管什么权限符来继承都是不可见的。
在这里插入图片描述
这里注意不可见不是表示子类无法继承父类的private属性的成员,这种说法是大错特错的,子类成员是可以继承父类中private属性的成员,但是他作为父类的私有成员是不能被子类进行访问的,所以此处写不可见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值