1.虚函数
如果不使用virtual关键字,当使用基类的指针p指向派生类的对象是,调用的p的一个方法(比如print)时,调用的是基类里面的print方法。
如果使用virtual关键字,则可以调用派生类里的print方法。
class Base { public:Base(){} public: virtual void print(){cout<<"Base";} }; class Derived:public Base { public:Derived(){} public: void print(){cout<<"Derived";} }; int main() { Base *point=new Derived(); point->print(); }
2.纯虚函数:
纯虚函数所在的类被称为抽象类,只能用来被继承而不能实例化。一个虚拟函数只是提供了一个可被子类型改写的接口。
class Query { public: // 声明纯虚拟函数 virtual ostream& print( ostream&=cout ) const = 0; // ... };
原文:http://www.cnblogs.com/yang-xiong/p/5194261.html