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类型的指针,但调用的分别是父类和子类的方法
如果不是虚函数调用的都是父类的函数
Please call me JiangYouDang!