纯虚函数是具体派生类必须重载的虚函数。如果一个类有一个没有重载的纯虚函数,那么它是一个抽象类,不能创建该类型的对象。
定义纯虚函数体的原因有以下死点:
- 纯虚析构函数。通常情况下,析构函数要么是虚函数并且为公有,要么是非虚函数并且为 protected。如果没有提供函数定义,则不能实例化该基类的派生类。
- 强迫程序员认识到正在使用缺省行为。对于普通虚函数,如果派生类没有重载则默认使用基类的缺省行为。如果不想隐含地使用基类的行为,可以使基类的虚函数为纯虚函数,则派生类必须显式地使用基类的行为。
- 提供部分行为。
- 帮助编译器诊断错误。如果不小心调用了一个纯虚函数(通常是对构造函数或析构函数间接调用),编译器可能查不到问题所在,这是可以在纯虚构函数里面写一些使程序崩溃的代码,从而方便进行查错。
文章来源:
http://my.donews.com/robinchow/2007/02/05/rhawrggrcrbpbeslbvcspydjubkcgkwxswuj/