一、定义
虚函数是一种特殊的虚函数,它的一般格式如下:
class <类名>
{
virtual <类型><函数名>(<参数表>)=0;
};
在许多情况下,在 基类中不能对 虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的 派生类去做。这就是纯 虚函数的作用。
虚函数可以让类先具有一个操作名称,而没有操作内容,让 派生类在继承时再去具体地给出定义。凡是含有纯 虚函数的类叫做 抽象类。这种类不能声明对象,只是作为 基类派生类服务。除非在 派生类中完全实现 基类中所有的的纯 虚函数,否则,派生类也变成了 抽象类,不能实例化对象。
 
1、为了方便使用 多态特性,我们常常需要在 基类中定义 虚拟函数
2、在很多情况下, 基类本身生成对象是不合情理的。例如,动物作为一个 基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。
为了解决上述问题,引入了纯 虚函数的概念,将函数定义为纯 虚函数(方法:virtual ReturnType Function()= 0;)。若要使 派生类为非 抽象类,则 编译器要求在派生类中,必须对纯 虚函数予以重写以实现 多态性。同时含有纯 虚函数的类称为 抽象类,它不能生成对象。这样就很好地解决了上述两个问题。
 
1、 多态性
指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种 多态性:编译时 多态性运行时多态性
a.编译时多态性:通过 重载函数实现
b 运行时多态性:通过 虚函数实现。
2、 虚函数
虚函数是在 基类中被声明为virtual,并在 派生类中重新定义的成员函数,可实现成员函数的动态 重载
3、 抽象类
包含纯 虚函数的类称为 抽象类。由于 抽象类包含了没有定义的纯 虚函数,所以不能定义抽象类的对象。