507 字
3 分钟
C++入门 (十一) : 继承
2026-03-18

继承#

面向对象是一个非常非常大的编程范式,类的继承是其中最基本的一个概念,是我们可以利用的最强大的特性之一。继承使类之间有了相互关联的层级关系,换句话说,它使我们拥有一个包含通用功能的积累,然后从这个最开始的父类中可以创建出很多的派生类。

这就是为什么继承非常有用,以为它可以帮助我们避免写很多重复的代码 _code duplication是指我们必须多次地写相同的代码,或者代码略微不同但是实际上是在做相同的事。

为了避免一次次地重复,我们可以把所有通用的_functions_放在一个父类中,然后很容易地从基类(base class)中创建派生类,稍微改变一些功能或者引入全新的功能。

—— 继承给我们提供了这样一种方式:把一系列类的所有通用的代码(功能)放到基类中,这样我们就不用像写模板那样不断重复了。

例子#

class Entity
{
public:
float X, Y;
void Move(float xa,float ya)
{
X += xa;
Y += ya;
}
};
class Player //要做的和Entity类很像,多了个Name和功能
{
public:
const char* Name;
float X, Y;
void Move(float xa, float ya)
{
X += xa;
Y += ya;
}
void PrintName()
{
std::cout << Name << std::endl;
}
};

如何继承#

class Entity
{
public:
float X, Y;
void Move(float xa,float ya)
{
X += xa;
Y += ya;
}
};
class Player : public Entity
{
public:
const char* Name;
void PrintName()
{
std::cout << Name << std::endl;
}
};

此时这个Player类同时是Entity和Player类,Player拥有Entity拥有的所有东西.

Player类是Entity类的超集

多态#

多态是一个单一类型,但是有多个类型的意思.

Player既是Player类也是Entity类,当需要Entity类对象的时候可以使用Player类对象(一个函数以Entity对象作为参数,可以传入Player对象)

C++入门 (十一) : 继承
https://dingfengbo.vercel.app/posts/c入门/11-c继承/
作者
Eureka
发布于
2026-03-18
许可协议
CC BY-NC-SA 4.0