纯虚函数:
在许多情况下,在基类中没有必要给出有意义的虚函数定义,这时可以把它说明成纯虚函数,把它的定义的工作留给派生类来做。定义纯虚函数的一般形式为:
class
类名
{
virtual 返回值类型 函数名(参数表)= 0; // 后面的"= 0"是必须的,否则,就成虚函数了
}
纯虚函数是一个在基类中说明的虚函数,但是它在基类中没有定义,在派生类中根据自己的需要定义自己的纯虚函数版本。纯虚函数为各派提供了接口。从基类继承过来的纯虚函数在派生类中任然是一个虚函数。
抽象类:
如果在一个类中至少有一个纯虚函数,那么这个类就是抽象类。抽象类中不仅包含纯虚函数,也可以包括虚函数。而且虚函数可能是在抽象类中定义的,也可能是从它的抽象基类中继承下来,重新定义的。
抽象类特点,即抽象类必须用作派生其他类的基类,而不能用于直接创建对象实例。一个抽象类不可以用来创建对象,只能用来为派生类提供一个接口规范,派生类中必须重载基类中的纯虚函数,否则它仍将被看作一个抽象类。
纯虚函数可以被实现(定义),但是,不能创建对象实例(effective c++)