第18章 父与子——类的继承
前面的章节介绍了如何编写一个完整的类。然而,面向对象的优势还没有完全体现出来。特别是在编写相似的类时,可能会造成很多的浪费。本章将以一个文字游戏为例,向大家介绍类的继承问题。
本章的主要知识点有:
- 类的继承性
- 继承的实现
- 子类对象的构造与析构
- 类的多态性
- 多态的实现与特例
- 虚函数与虚析构函数的概念
- 纯虚函数与抽象类的概念
- 多重继承的概念
18.1 剑士·弓箭手·法师的困惑
在一个角色扮演类游戏(RPG)中,可能有各种不同职业的玩家,比如剑士、弓箭手和法师。虽然他们的职业不同,却有着一些相似之处:他们都具有生命值(Health Point——HP)、魔法值(Magic Point——MP)、攻击力(Attack Point——AP)、防御力(Defense Point——DP)、经验值(Experience——EXP)和等级(Level——LV)。虽然它们有着相似之处,但又不完全相同:剑士和弓箭手都具有普通攻击的技能,只不过剑士用的是剑,而弓箭手用的是弓箭。
这样看来就有麻烦了。如果只用一个类来描述3种不同职业的玩家,肯定无法描述清楚。毕竟这3种职业不是完全相同的。如果用3个类来描述这3种职业,那么三者的共同点和内在联系就无法体现出来,并且还造成了相同属性和功能的重复开发。
需要有一种好的方法,既能把剑士、弓箭手和法师的特点描述清楚,又能减少重复的开发和冗余的代码。在C++中,有一种称
本文详细介绍了C++中类的继承性,以角色扮演游戏中的剑士、弓箭手、法师为例,阐述了继承的概念和实现方式。文章通过实例讲解了如何使用继承减少重复开发,探讨了继承的实现、子类对象的构造与析构、多态性以及虚函数。此外,还介绍了抽象类与纯虚函数、虚析构函数以及继承方式的区别。
订阅专栏 解锁全文
3392

被折叠的 条评论
为什么被折叠?



