正常情况下纯虚函数类似于java中的抽象函数,仅仅提供接口,不提供定义,由不同的子类提供不同的实现,从而表现出多态。可是也有两个特殊的情况。
情况一:纯虚函数也是能够有实现体的。仅仅是因为不能建立基类的对象,因此不能直接调用,可是能够在子类中通过作用域解析操作符静态调用。因此能够在里面加入一些公共的代码。比如:
class Base { public: virtual void fun1()=0; }; void Base::fun1() { cout << "Base::fun1"<<endl; } class Derived : public Base { public: virtual void fun1() { Base::fun1();//静态调用 cout << "Derived::fun1"<<endl; } }; int main() { Base* pb= new Derived; pb -> fun1(); delete pb; }