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类型的指针,但调用的分别是父类和子类的方法

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

posted on 2014-10-13 10:25  luckygxf  阅读(465)  评论(0编辑  收藏  举报

导航