这里有点菜鸟怀疑(我的另一个:P)
关于我正在阅读的一本书:
- 一个抽象基类(ABC)是通过纯虚方法的声明来实现的。
- 使方法成为纯虚方法的原因在于
= 0
声明的末尾。 - 您可以这样声明:
virtual void f() = 0;
这样您就不需要在 ABC 中定义它,但是派生类必须实现它自己的版本。 - 但是你也可以像这样声明一个虚方法:
void f() = 0;
这样你需要在 ABC 中定义方法,派生类可以这样使用它。ABC 需要这种方法,其方法都通常由其派生类应用。
如果以上所有观点都是正确的,我不明白的是:什么是虚拟方法?
因为void f() = 0;
对我来说看起来像是一种常规方法。ABC 将定义它,而派生对象将使用 ABC 的定义,就像任何其他公共方法一样。是否有对这两个实例具有吸引力的虚拟方法定义?
纯虚函数或纯虚方法是需要由非抽象派生类实现的虚函数
这个定义是从这个站点的另一个问题中挑选出来的。所以我的猜测是我正在阅读的书是错误的?void f() = 0;
声明该类是 ABC 但它不是纯虚拟方法。有人可以证实这一点或向我解释吗?