虚函数是为了实现多态。当父类被子类继承后,父类中的某些函数在子类中要重新定义,则声明其为虚函数。例如:
class A
{
.......
virtual int fun(int a ,char *b); //实现A功能
.......
};
class B: public A
{
........
virtual int fun(int a, char *b); //实现B功能
........
};
A *objA = new(B);
objA.fun(); //这里调用的是:B::fun(int a, char *b),实现的是B功能
//举个例子看看 如何实现多态 #include <iostream> using namespace std; class Graph { public: virtual void draw()=0; }; class Rectangle:public Graph { public: void draw() { cout<<"Draw Rectangle"<<endl; } }; class Circle:public Graph { public: void draw() { cout<<"Draw Circle"<<endl; } }; void display(Graph *graph) { graph->draw(); } int main() { Rectangle rect; Circle circle; display(&rect); display(&circle); system("pause"); return 0; }
有纯虚函数的类叫抽象类,抽象类是为了实现多态。
普通的虚函数是为了子类不同实现,也就是重载了。