抽象 Class 与基础 Class 是一回事吗?
Is an Abstract Class the same thing as a Base Class?
抽象 Class 与基础 Class 是一回事吗?
我偶尔会看到 Base Class 这个词,但是当我查它的意思时,我往往会看到 "Abstract Class" 乱七八糟的。
它们只是两个意思基本相同的词吗?
这是一个典型的基础class多边形:
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); }
};
抽象基础 classes 与前面示例中的多边形 class 非常相似。它们是 classes,只能用作基础 classes(你不能实例化它们),因此允许有没有定义的虚成员函数(称为纯虚函数)。语法是将它们的定义替换为 =0(以及等号和零):
抽象基础多边形 class 可能如下所示:
// 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;
};
一个实际区别是您不能创建抽象基Class的对象,而您可以创建非抽象基的对象-抽象基础 Class。这种差异几乎足以让我决定何时使用哪个。 :)
抽象 Class 与基础 Class 是一回事吗?
我偶尔会看到 Base Class 这个词,但是当我查它的意思时,我往往会看到 "Abstract Class" 乱七八糟的。
它们只是两个意思基本相同的词吗?
这是一个典型的基础class多边形:
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); }
};
抽象基础 classes 与前面示例中的多边形 class 非常相似。它们是 classes,只能用作基础 classes(你不能实例化它们),因此允许有没有定义的虚成员函数(称为纯虚函数)。语法是将它们的定义替换为 =0(以及等号和零):
抽象基础多边形 class 可能如下所示:
// 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;
};
一个实际区别是您不能创建抽象基Class的对象,而您可以创建非抽象基的对象-抽象基础 Class。这种差异几乎足以让我决定何时使用哪个。 :)