C++私有派生详解:公有与保护成员转私有

需积分: 33 1 下载量 177 浏览量 更新于2024-07-14 收藏 8.66MB PPT 举报
私有派生是C++程序设计中的一种继承方式,它允许派生类完全控制基类的访问权限。在C++中,派生类与基类之间的关系主要有三种:公有继承、私有继承和保护继承。其中,私有派生(private inheritance)是这样一种机制: 1. **定义与效果**: 当一个类(派生类)声明为基类的私有派生时,基类的所有公有成员和保护成员在派生类中都会变为私有成员,这意味着它们只能在派生类内部被访问,外部代码无法直接访问这些基类的成员。基类的私有成员在任何情况下都不可见,无论是派生类还是类外。 2. **语法表示**: 在C++中,私有派生的语法形式是`class DerivedClass: private BaseClass`。这表明DerivedClass将继承BaseClass的所有内容,但这些内容将以私有访问级别隐藏起来。 3. **C++语言背景**: C++作为一种基于C语言发展而来的编程语言,经历了多次迭代和完善。C语言最初被设计用于编写UNIX操作系统,后来的C++则在此基础上增强了面向对象特性。私有派生概念体现了C++中继承的灵活性,使得程序员可以在不暴露细节的情况下重用代码。 4. **C++特点**: - C++支持结构化编程,简洁灵活,适用于大型系统和小型控制程序,甚至科学计算。 - C++结合了高级语言和汇编语言的优点,提供了丰富的运算符、位运算和灵活的数据结构,提高了程序的表达能力和执行效率。 - 虽然C++的语法相对宽松,给了程序员较大的自由度,但也意味着对新手而言学习和调试可能会有挑战,需要深入理解语言规则。 5. **程序移植性与调试**: C++程序的可移植性良好,编写好的程序可以在不同型号的计算机上运行,但调试过程可能需要细心和对语言规则的熟悉。对于初学者,理解和掌握C++语法以及调试技巧是关键。 私有派生在实际编程中常用于创建类库或框架,以隐藏实现细节,确保代码的安全性和封装性。通过这种方式,派生类可以在保持基类功能的同时,根据自身需求进行扩展或修改,而不影响基类的原始设计。

用C++编写一个程序设计一个汽车类 vehicle,包含的数据成员有车名:name,车轮个数:wheels,车重:weight,排量:delivery_capacity,最高速度:max_speed。小车类 car 是它的私有派生类,其中包含载人数 passenger_load。卡车类 truck 是 vehicle 的私有派生类,其中包含载人数 passenger_load 和载重量 payload,每个类都有相关数据的输出方法。 指导: 基类 vehicle 包含数据成员:name(车名)、wheels、(车轮个数)、weight(车重)、 delivery_capacity(排量)和 max_speed(最高速度),成员函数:初始化数据成员的构造函数 vehicle()、获得车轮个数的成员函数 get_wheels()、获得车重的成员函数 get_weight()、输出数据的成员函数 show()。 由它派生出 car 类和 truck 类,将公共的属性和方法放在 vehicle 类中。为了避免在类外通过对象访问这些公共属性,但是还希望在派生类中可以访问这些属性,将其定义为保护 protected 属性。 派生类 car 新增了 1 个数据成员 passenger_load(载人数)和 3 个成员函数,构造函数 car()、获得载人数的成员函数 get_passengers()、输出数据的成员函数 show()。 派生类 truck 新增了 2 个数据成员 passenger_load(载人数)、payload(载重量)和 4 个成员函数,构造函数 truck ()、获得载人数的成员函数 get_passengers()、获得载重量的成员函数 get_payload()、输出数据的成员函数 show()。

2023-06-11 上传