Green 发表于 2021-8-7 12:16:07

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

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


文档来源:51CTO技术博客https://blog.51cto.com/u_2498536/3305566
页: [1]
查看完整版本: c++中的virtual函数,即虚函数