代码之家  ›  专栏  ›  技术社区  ›  user2690449

抽象类和基类是一样的吗?

  •  0
  • user2690449  · 技术社区  · 9 年前

    抽象类和基类是一样的吗?

    我偶尔会看到“基类”一词,但当我查找它的含义时,我倾向于看到“抽象类”到处都是。

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

    2 回复  |  直到 9 年前
        1
  •  2
  •   Kam    9 年前

    这是一个典型的基类多边形:

    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); }
    };
    

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

    抽象的基本多边形类可能如下所示:

    // 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;
    };
    
        2
  •  1
  •   munikarmanish    9 年前

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