C++抽象类

Posted Linux编程学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++抽象类相关的知识,希望对你有一定的参考价值。

3.2 抽象类

假设我们要设计一个动物信息管理系统,系统要基类许多动物的信息。那么,可以构建一个动物基类,命名为animal类。然后,要定义的其他的动物类,就可以继承于animal类。这个animal基类不是一个具体的动物,它不可以定义对象,只有从animal类派生出来的派生类才可以定义对象。

那么,这种不用来定义对象而只作为一种基本类型用作继承的类,称为:抽象类(abstract class),由于它常用作基类,通常称为“抽象基类(abstract base class)”。凡是包含纯虚函数的类都是抽象类。因为纯虚函数是不能被调用的,包含纯虚函数的类是无法建立对象的。抽象类的作用是作为一个类族的共同基类,或者说,为一个类族提供一个公共接口。

所以,有如下的测试例子:

程序运行结果如下:

其中基类animal声明了纯虚函数,所以,基类animal是一个抽象类。那么,不可以使用基类animal定义对象。

但是,可以使用抽象类来定义指针对象。因为,定义指针对象的时候,不是实实在在地构建一个对象。

如果在抽象类所派生出的新类中对基类的所有纯虚函数进行了定义,那么,这些函数就被赋予了功能,可以被调用。这个派生类就不是抽象类,而是可以用来定义对象的具体类。如果在派生类中没有对所有纯虚函数进行定义,则此派生类仍然是抽象类,不能用来定义对象。

虽然抽象类不能定义对象(或者说抽象类不能实例化)。但是,可以定义指向抽象类数据的指针变量。当派生类成为具体类之后,就可以用这种指针指向派生类对象,然后,通过该指针调用虚函数,实现多态性的操作。

以上是关于C++抽象类的主要内容,如果未能解决你的问题,请参考以下文章

如何移除网站Response Headers中的X-Powered-By信息?

X-Powered-By中的Express在哪个地方能改呢

隐藏响应的server,X-Powered-By

DouPHP去除Powered by DouPHP版权的方法

Sysdig and Falco now powered by eBPF

X-Powered-By: ASP.NET是干啥用的