c++ virtual

来源:互联网 发布:知乎 大泽佑香 编辑:程序博客网 时间:2024/06/05 21:04

类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现
基类的函数调用如果有virtual则根据多态性调用派生类的,如果没有virtual则是正常的静态函数调用,还是调用基类的。

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();} 

Output:Derived

http://www.cnblogs.com/Yogurshine/archive/2013/01/10/2855654.html