这可以是抽象基类的定义:“仅包含纯虚方法,通常用作派生类的接口规范”
或抽象基类还可以包含其他方法(也是虚拟的)
答案 0 :(得分:5)
根据C ++标准的定义(§10.4,抽象类,强调我的):
抽象类是一个只能用作其他类的基类的类;没有抽象的对象 除了作为派生自它的类的子对象之外,可以创建类。如果一个类至少有,则它是抽象的 一个 纯虚函数。 [注意:这样的功能可能会被继承:见下文。 -end note]
class point { / ... / }; class shape { // abstract class point center; public: point where() { return center; } void move(point p) { center=p; draw(); } virtual void rotate(int) = 0; // pure virtual virtual void draw() = 0; // pure virtual };
在示例中,shape
包含两个纯虚方法(使其成为抽象类),但也包含两个非虚方法。那没问题。因此,抽象类包含仅纯虚函数的原始定义过于狭窄。只有至少一个这样就足够了。