小编典典

虚拟/纯虚拟解释

all

如果一个函数被定义为虚拟并且与纯虚拟相同,这到底意味着什么?


阅读 113

收藏
2022-03-24

共1个答案

小编典典

来自维基百科的虚函数

在面向对象的编程中,在 C++ 和 Object Pascal
等语言中,虚函数或虚方法是一种可继承和可覆盖的函数或方法,可促进动态调度。这个概念是面向对象编程 (OOP)
的(运行时)多态性部分的重要组成部分。简而言之,虚函数定义了要执行的目标函数,但在编译时可能不知道目标函数。

与非虚函数不同,当虚函数被覆盖时,派生最多的版本将用于类层次结构的所有级别,而不仅仅是创建它的级别。因此,如果基类的一个方法 调用
虚方法,则将使用派生类中定义的版本,而不是基类中定义的版本。

这与非虚函数形成对比,非虚函数仍然可以在派生类中被覆盖,但“新”版本只会被派生类及其以下使用,而根本不会改变基类的功能。

然而..

纯虚函数或纯虚方法是如果派生类不是抽象的,则需要由派生类实现的虚函数。

当纯虚方法存在时,类是“抽象的”,不能单独实例化。相反,必须使用实现纯虚拟方法的派生类。纯虚拟根本没有在基类中定义,所以派生类 必须
定义它,或者派生类也是抽象的,不能被实例化。只有没有抽象方法的类才能被实例化。

虚拟提供了一种覆盖基类功能的方法,而纯虚拟 需要 它。

2022-03-24