首页 > 代码库 > c++中的virtual函数,即虚函数

c++中的virtual函数,即虚函数

c++中的虚函数主要是用来实现多态的,虽然都同时指向父类的实例。但调用的确实子类的函数,这个有点像java的接口和实现的关系了。一个接口有多种实现,一个接口对象调用的是哪个实现的方法,这个就是多态了

这里我写了两个类,FClass作为父类,CClass作为子类,父类和子类中都有一个fun()函数。先看一下代码

FClass.h

 1 #include <iostream> 2  3 using namespace std; 4  5 #ifndef __FClass__ 6 #define __FClass__ 7  8 class FClass{ 9 public:10     virtual    void fun1(){11         cout<<"this is FClass fun1"<<endl;12     }13 };14 15 #endif

CClass.h

 1 #include <iostream> 2 #include "FClass.h" 3  4 using namespace std; 5  6 #ifndef __CClass__ 7 #define __CClass__ 8  9 class CClass:public FClass{10 public:11     virtual void fun1(){12         cout<<"this is CClass fun1"<<endl;13     }14 };15 #endif

测试main.cpp

 1 #include <iostream> 2  3 #include "FClass.h" 4 #include "CClass.h" 5  6 using namespace std; 7  8  9 int main(){10     11 12     FClass *fclass = new FClass();13     FClass *cclass = new CClass();14     fclass->fun1();15     cclass->fun1();16 17     delete fclass;18     delete cclass;19 20     return 0;21 }

虽然都为FClass类型的指针,但调用的分别是父类和子类的方法

如果不是虚函数调用的都是父类的函数

c++中的virtual函数,即虚函数