"本资源为C++课程的课件,主要讲解了派生类与继承的概念及其应用。通过实例展示了如何利用继承实现代码复用,以及不同类型的继承方式,如公有继承、私有继承。"
在C++编程语言中,继承是一种核心特性,它允许创建一个新的类(派生类)基于已存在的类(基类)。这种层次模型有助于构建复杂的类结构,并实现代码的重用。在给定的示例中,我们看到类`B`是从类`A`私有继承的。类`B`不仅可以访问`A`的私有和保护成员,还能添加自己的私有成员。
4.1派生类的概念
继承的主要目的是为了代码重用和扩展。在实际编程中,我们经常遇到具有相似特征但又有细微差别的对象,比如汽车类可以派生出运输汽车、专用汽车等子类。通过继承,我们可以避免重复编写相同或类似的代码,只需要在基类的基础上添加或修改所需的部分。
4.1.1为什么要使用继承
在给定的`Person`类和`Employee`类的例子中,如果`Employee`类不使用继承,那么就需要重复定义`Person`类中的所有数据成员。然而,通过继承,`Employee`可以直接作为`Person`的派生类,只需添加`department`和`salary`成员,这样就提高了代码的可维护性和可读性。
4.1.2派生类的声明
派生类的声明通常包含基类和继承方式。例如,`class Employee : access_specifier Person`,其中`access_specifier`可以是`public`(公有继承)、`private`(私有继承)或`protected`(保护继承)。这决定了派生类对基类成员的访问权限。
- 公有继承(public inheritance):基类的公有和保护成员在派生类中都保持公有和保护状态,允许派生类的对象直接访问。
- 私有继承(private inheritance):基类的公有和保护成员在派生类中都变为私有,只有派生类的成员函数能访问,外部无法直接访问。
- 保护继承(protected inheritance):在C++中,这个选项不常用,但基类的公有和保护成员在派生类中都变为保护,限制了访问权限。
在给定的代码中,类`B`私有继承自`A`,这意味着`A`的成员在`B`中是私有的,不能直接被`B`之外的代码访问。然而,`B`通过访问声明`A::print`使得`print`函数在`B`类中可见,尽管它是私有的。
总结来说,继承是面向对象编程中的关键概念,它允许我们构建类的层次结构,实现代码复用,同时提供了一种灵活的方式来扩展和定制基类的功能。通过正确使用继承,我们可以设计出更加模块化、易于维护的软件系统。