抽象基类(abstract base class,ABC)
从若干个类中抽象出它们的共性,将这些特性放到一个基类中。并且至少包含一个纯虚函数(pure virtual function)。当类声明中包含纯虚函数时,则不能创建该类的对象。
纯虚函数
纯虚函数声明的结尾处为 = 0
class class_a
{
private:
...
public:
virtual double Area()const = 0; //a pure virtual function
...
};
在原型中使用=0指出类是一个抽象基类,在类中可以不定义该函数。
ABC描述的是至少使用一个纯虚函数的接口,从ABC派生出的类(具体类concrete)将根据派生类的具体特征,使用常规虚函数来实现这种接口。
使用ABC实施接口规则
可以将ABC看做是一种必须实施的接口。ABC要求具体派生类覆盖其纯虚函数--迫使派生类遵循ABC所设置的接口规则。这种模型在基于组件的编程模式中很常见,在这种情况下,使用ABC使得组件设计人员能够制定“接口约定”,确保了从ABC派生的所有组件都至少支持ABC指定的功能。