0

抽象类和基类一样吗?

我偶尔会看到术语基类,但当我查找它的含义时,我倾向于看到“抽象类”。

它们只是两个意思基本相同的词吗?

4

2 回答 2

2

这是一个典型的基类 Polygon:

class Polygon {
  protected:
    int width, height;
  public:
    void set_values (int a, int b)
      { width=a; height=b; }
    virtual int area ()
      { return 0; }
};

class Rectangle: public Polygon {
  public:
    int area ()
      { return width * height; }
};

class Triangle: public Polygon {
  public:
    int area ()
      { return (width * height / 2); }
};

抽象基类与前面示例中的 Polygon 类非常相似。它们是只能用作基类的类(您不能实例化它们),因此允许具有没有定义的虚成员函数(称为纯虚函数)。语法是将它们的定义替换为 =0(以及等号和零):

抽象基础 Polygon 类可能如下所示:

// abstract class CPolygon
class Polygon {
  protected:
    int width, height;
  public:
    void set_values (int a, int b)
      { width=a; height=b; }
    virtual int area () =0;
};
于 2015-01-29T04:34:56.693 回答
1

一个实际的区别是您不能创建抽象基类的对象,而您可以创建非抽象基类的对象。这种差异几乎足以让我决定何时使用哪个。:)

于 2015-01-29T05:07:30.760 回答