C++继承详解:公有继承与派生类的概念及应用
需积分: 7 96 浏览量
更新于2024-08-19
收藏 188KB PPT 举报
"C++中的公有继承是一种允许派生类继承基类公开和保护成员的机制,基类的public成员在派生类中保持public,protected成员保持protected。派生类可以直接访问基类的public和protected成员,但不能访问private成员。外部函数只能通过派生类的public接口访问基类的public成员。这种继承方式常用于表示'is-a'关系,如交通工具中的汽车、卡车等都是交通工具的一种。此外,代码示例展示了Shape类的继承结构,包括2D和3D形状,如Circle、Triangle、Rectangle、Sphere、Cube和Tetrahedron等,这些类通过继承扩展了基本的形状特性。"
在C++中,继承是面向对象编程的一个核心概念,它允许创建新的类(派生类)基于现有的类(基类)。公有继承(public inheritance)是继承的三种主要方式之一(另外两种是私有继承(private)和保护继承(protected)),它体现了“is-a”关系。例如,在描述交通工具的场景中,汽车、卡车、小汽车等都是交通工具的实例,因此它们可以作为交通工具的派生类。
当一个类(如`GraduateStudent`)声明为另一个类(如`Student`)的公有派生类时,语法如下:
```cpp
class GraduateStudent : public Student {
// 成员定义
};
```
这意味着`GraduateStudent`继承了`Student`的所有public和protected成员。`Student`的public成员在`GraduateStudent`中仍然是public,可以被外部代码直接访问。`Student`的protected成员在`GraduateStudent`中保持protected,只有`GraduateStudent`及其派生类的成员函数可以访问。然而,无论何时,`GraduateStudent`的成员函数都可以直接访问`Student`的所有非private成员。
例如,`Student`类有一个`protected`成员`number`和`public`成员`SetScore`,`GraduateStudent`作为其派生类,可以直接修改`number`和调用`SetScore`。同时,`GraduateStudent`可以添加新的成员和功能,如`advisor`,并提供相应的访问方法。
继承的好处在于代码复用和扩展。通过继承,可以避免重复编写相同的代码,并且可以根据需要在派生类中添加新的特性或修改现有行为。这使得程序设计更具灵活性,能够适应不断变化的需求。例如,`Student`类可能包含了所有学生的基本信息,而`GraduateStudent`则在此基础上增加了导师信息,这在不改变`Student`原有结构的情况下实现了功能的扩展。
公有继承在C++中是一个强大的工具,它促进了代码的模块化和复用,使得类的层次结构更加清晰,同时保持了良好的封装性和访问控制。在设计复杂的系统时,合理的继承结构能够帮助我们构建出更易于理解和维护的代码。
2020-12-22 上传
2018-10-31 上传
2011-08-25 上传
2024-07-12 上传
2024-11-08 上传
2024-11-08 上传
2024-11-08 上传
2023-05-27 上传
2023-07-16 上传
郑云山
- 粉丝: 21
- 资源: 2万+
最新资源
- Theme-project
- 预算跟踪工具PWA
- ElementaryCellularAutomata:演示Wolfram基本元胞自动机的交互式GUI
- lotus:结合 CSS4 和 JavaScript 模板以获得乐趣和荒谬
- 毕业设计&课设--毕业设计之SpringCloud-B2C电子商务平台服务端.zip
- Excel模板暑假学生计划表.zip
- wechatDatDecode:微信dat文件解码,Windows系统下载exe文件可直接使用
- 马拉松屏幕更新程序:BabyNodeCG
- Delete-files-older-than-and-empty-directories:准备将简单脚本复制粘贴到任务计划程序中
- physiotherapy:它是适用于mvvm架构的移动应用程序草案,专家可以在其中跟踪物理治疗患者
- folksy:教育游戏的框架
- Excel模板00数量金额式明细帐.zip
- node-ec-pem:使用`crypto.createECDH`生成的密钥启用`crypto.sign`和`crypto.verify`
- Dart-Cms-Manage:这是Dart-Cms后台管理系统页面项目,使用vue全家桶
- 同策-2018-2019年房企融资白皮书-2019.1-61页.rar
- DGM-Competency-Browser:该项目允许学生、教师和雇主看到课程和特定能力之间的联系