C++继承与派生机制深度解析
需积分: 10 46 浏览量
更新于2024-08-01
收藏 764KB PDF 举报
"C++继承与派生机制详解"
在C++编程中,继承与派生是面向对象编程的重要概念,允许我们创建一个新类(派生类)基于一个已存在的类(基类)。这种机制使得代码重用变得更加高效,同时也能实现类之间的层次结构,以表达更复杂的现实世界模型。
**继承方式**
C++支持三种继承方式:
1. **公有继承(public inheritance)**:基类的公共和保护成员在派生类中仍然是公共和保护的,而私有成员则保持私有。这意味着派生类可以访问基类的所有非私有成员,并且外界可以通过派生类对象访问基类的公共成员。
2. **私有继承(private inheritance)**:基类的公共和保护成员在派生类中变为私有的,因此在派生类外部不可见,仅限派生类内部使用。基类的私有成员仍然保持私有。
3. **保护继承(protected inheritance)**:基类的公共成员在派生类中变为保护的,而保护成员保持不变。这样,基类的公共成员在派生类中对外界不可见,但可由派生类及其子类访问。
**继承的工作内容**
继承涉及到三个主要任务:
1. **吸收基类成员**:派生类会接收基类的所有非静态成员(数据成员和函数成员)。数据成员在派生类中保留其原始类型和初始值,而函数成员则提供访问基类功能的途径。
2. **改造基类成员**:
- **访问权限的改变**:根据继承方式,基类成员的访问权限可能在派生类中改变。
- **覆盖**:派生类可以重新定义(覆盖)基类的虚函数,以提供新的实现或增强功能。
3. **新增派生类特有的成员**:派生类可以添加自己的数据成员和函数,以扩展或定制基类的行为,实现“青出于蓝而胜于蓝”。
**访问控制与成员的“拥有”和“共享”**
- **拥有**:当提到派生类“拥有”基类的数据成员时,意味着派生类对象在内存中包含基类的数据成员副本。对于函数成员,派生类并不“拥有”这些成员,而是通过继承关系“共享”它们的使用权。
- **共享**:派生类对象能够调用基类的函数成员,但这并不意味着它们复制了这些函数。相反,它们共享了基类的函数实现,从而节省了内存并提高了效率。
**继承的目的**
继承的主要目标是实现代码重用和封装。通过创建一个新的类(派生类),我们可以基于已验证的、功能完善的基类来构建更复杂或特定功能的类,而不必重复编写相似的代码。此外,继承还帮助构建类的层次结构,便于组织和管理复杂系统中的类,使得代码更易于理解和维护。
2013-06-28 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
misery07
- 粉丝: 0
- 资源: 2
最新资源
- 旅行商问题Python实现
- Didar-309-项目-
- 传送带的PLC程序控制.rar
- riichi:麻雀飜符手役点数计算(日麻和牌点数计算)
- nealbarshes.github.io:GitHub页面
- CORPICECREAM:激励活动指导处处长“萨尔塞多塞科塞多公司的商业生产者”
- Refractor02:重新提交前一张票
- zsh-xah-fly-keys:zsh上的Xah Fly键!
- ant-deb-task:从 code.google.compant-deb-task 自动导出
- 毕业生信息管理系统asp毕业设计(源代码+论文+开题报告+外文翻译+文献综述+答辩PPT).zip
- 工作交接数据库系统.zip
- minikube-client:为Minikube生成客户端证书
- Accuinsight-1.0.3-py2.py3-none-any.whl.zip
- mastermind:请参阅使用D3.js用Javascript编写的Mastermind的新交互式Web版本。
- mycalendar:HTMLに组み込みやすいカレンダー
- 鼠标移动数据光标:在鼠标移动时显示和更新图形标题栏中图像的像素值。-matlab开发