抽象基类定义

时间:2015-01-31 22:56:08

标签: c++

这可以是抽象基类的定义:“仅包含纯虚方法,通常用作派生类的接口规范”

或抽象基类还可以包含其他方法(也是虚拟的)

1 个答案:

答案 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包含两个纯虚方法(使其成为抽象类),但也包含两个非虚方法。那没问题。因此,抽象类包含纯虚函数的原始定义过于狭窄。只有至少一个这样就足够了。