【发布时间】:2012-08-22 07:16:29
【问题描述】:
这里有点菜鸟怀疑(我的另一个问题:P)
关于我正在阅读的一本书:
- 一个 Abstract Base-Class(ABC) 是通过纯虚方法的声明来实现的。
- 使方法成为纯虚方法的是声明末尾的
= 0。 - 您可以这样声明:
virtual void f() = 0;这样您就不需要在 ABC 中定义它,但派生类必须实现它自己的版本。 - 但是你也可以像这样声明一个虚方法:
void f() = 0;这样你就需要在 ABC 中定义方法,派生类可以这样使用它。 ABC 需要这种方法,其方法都被其派生类普遍应用。
如果以上几点都是真的,我不明白的是:虚方法到底是什么?
因为void f() = 0; 在我看来是一种常规方法。 ABC 将定义它,而派生对象将使用 ABC 的定义,就像任何其他公共方法一样。是否有对这两个实例具有吸引力的虚拟方法定义?
纯虚函数或纯虚方法是虚函数 需要由非派生类实现 摘要
这个定义是从这个网站的另一个问题中挑选出来的。所以我的猜测是我正在阅读的书是错误的? void f() = 0; 声明该类是 ABC,但它不是纯虚方法。有人可以确认或向我解释一下吗?
【问题讨论】:
标签: c++ methods virtual abstract-class derived-class