初识继承(继承方式 + “切片”)

本文介绍了C++中的继承概念,强调了继承提高代码可复用性的意义。详细讲解了继承的三种方式:公有、保护和私有继承,并对比了它们在访问权限上的差异。此外,还探讨了基类与派生类之间的“切片”问题,解释了为什么基类对象不能直接赋值给派生类对象,以及派生类对象可以赋值给基类对象时发生的“切片”现象。

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

1 继承概念
对于继承,我们可以形象的理解为是一种父子的关系,子类继承父类(就像是孩子继承了父亲的某些特征),是C++的一种特性。
通过继承可以提高程序的可复用性。
被继承的类我们称之为父类(基类),继承的类称为子类(派生类)。
在C++中既可以单继承,即每次只继承一个类(可以多次继承);也可以多继承,即每次可继承多个类。

如何理解可复用性?
(1)定义了一个函数,每次需要借助该函数的功能的时候,不需要自己再写一段代码,只需要去调用它就可以,这其实就是一种复用,减少了代码的冗余。
(2)对于一个类A,如果类B是在类A的基础上进行扩展的,那我们就不再需要重新定义类A中的一些结构,而是可以通过继承的方式,继承类A中的成员变量和成员函数,如果自己还有其它需求则可以自己再在B中定义。所以可以说,继承是实现了类级别的复用。

2 继承的三种方式
继承的三种方式:公有继承public、保护继承protected、私有继承private
类的成员的三种访问限定符:公有的pubic、保护的protected、私有的private
我们都知道,对于公有成员既可以在类内访问也可以在类外访问,对于保护和私有的成员都只能在类内访问,不能在类外面进行访问,那么protected和private访问限定符有什么区别呢?
我们先看一张表:
继承方式和访问限定符
可以看到对于public和protected成员,在不同的继承方式下,其访问限定都是变为较小的范围,但是对于private成员,不论在哪种继承方式下,都是不可见的。
什么叫“不可见”?不可见就是指,不论在类内还是类外都没有办法访问它,但该成员仍然是存在的,
【总结】在继承的下,public成员既可以在类内访问,也可以在类外访问;
protected成员可以在类内访问,但是不能在类外访问;
private成员在类内、类外都不可以访问。

3 定义派生类
定义派生类:
单继承 class 派生类类名:继承方式 基类类名
多继承 class 派生类类名:继承方式1 基类类名1,继承方式2 基类类名2,… …
定义派生类
4 基类和派生类 “切片”
两个问题
(1)基类对象能不能赋给派生类对象?
不能,基类里面的成员派生类中一定有,但是派生类中的成员基类中不一定有,所以不能直接赋值。 (编译不通过,提示语法错误)
基类的指针能不能赋给派生类的指针?
不能,但对基类进行强转可以。
基类的指针能不能赋给派生类的引用?
不能,但对基类进行强转可以。
(2)派生类对象/指针/引用能不能赋给基类对象/指针/引用?
可以,派生类中有基类的成员,派生类赋给基类相当于将派生类的一部分成员切片给基类。
切片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值