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

时间:2023-03-09 06:23:41
c++中的virtual函数,即虚函数

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

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

FClass.h

 #include <iostream>

 using namespace std;

 #ifndef __FClass__
#define __FClass__ class FClass{
public:
virtual void fun1(){
cout<<"this is FClass fun1"<<endl;
}
}; #endif

CClass.h

 #include <iostream>
#include "FClass.h" using namespace std; #ifndef __CClass__
#define __CClass__ class CClass:public FClass{
public:
virtual void fun1(){
cout<<"this is CClass fun1"<<endl;
}
};
#endif

测试main.cpp

 #include <iostream>

 #include "FClass.h"
#include "CClass.h" using namespace std; int main(){ FClass *fclass = new FClass();
FClass *cclass = new CClass();
fclass->fun1();
cclass->fun1(); delete fclass;
delete cclass; return ;
}

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

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

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