365beat-beat365官方网站手机版-365账号无法登陆

虚函数的用法

由于在学习QT的时候,涉及到了虚函数的,在网上查看了别人的博客,在这里进行总结: 先看 下虚函数的定义: 在某基类中声明为 virtual 并在

虚函数的用法

由于在学习QT的时候,涉及到了虚函数的,在网上查看了别人的博客,在这里进行总结:

先看 下虚函数的定义:

在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数,virtual 函数返回类型 函数名(参数表) {函数体;},实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数

看一个简单的例子来进行说明:

1 #include "stdio.h"

2 class Parent

3 {

4 public:

5

6 char data[20];

7 void Function1();

8 virtual void Function2(); //声明Function2为虚函数

9 }parent;

10

11 void Parent::Function1()

12 {

13 printf("this is parent,function1\n");

14 }

15

16 void Parent::Function2()

17 {

18 printf("this is parent,function2\n");

19 }

20

21 class Child::public Parent

22

23 {

24 void Function1();

25

26 void Function2();

27

28 }child;

29

30 void Child::Function1()

31 {

32 printf("this is child,function1");

33 }

34

35

36 void Child::Function2()

37 {

38 printf("this is child,function2");

39 }

40

41

42 int main()

43 {

44 Parent *p; //定义一个基类指针

45 if(_getch()=='c') //如果输入一个小写字母c

46

47 p=&child; //指向继承类对象

48

49 else p=&parent; //否则指向基类对象

50

51 p->Function1();

52

53 p->Function2();

54

55 return 0;

56 }

View Code

当编译程序后,输入小写字母c后,打印的结果是:

this is parent,function1

this is child,function2

解释:在主函数中,定义了一个parent类的指针,该指针的赋值是child类,所以指针指向child对象。

虽然指针指向了child类的对象,但是编译器无法知道指针到底是指向那个对象,直到程序运行的时候,函数才能够根据用户的输入来能判断出来指针的正确指向。

在本程序运行的时候,并未涉及到用户的输入指定,所以指针默认的去调用主类parent的成员函数。

this is parent,function1

在主类的parent的成员函数中,声明Function2()是虚函数,虚函数可以在运行时,自动的去判断指针的正确指向,而不需要人为的输入进行指定。所以运行的结果正确

地调用子类child的成员函数。

总结:

若对主类的成员函数设置为虚函数,必须显示的写出关键词virtual,子类的虚函数必须和主类的虚函数同名,但是关键词virtual可以省略。

虚函数一般是在涉及到类的继承和多态性的时候应用,常见的地方在图像界面开发QT或者MFC。图像化界面的控件好多都是继承的关系。

← 上一篇: 奔驰smart怎么样能买吗推荐
下一篇: 屏障受损肌专属!2026 年 2 月修护好物推荐,舒缓保湿强韧肌肤 →

相关推荐

手机屏幕滑怎么办

手机屏幕滑怎么办

在日常生活中,许多手机用户都会遇到手机屏幕滑动不畅或过于灵敏的问题,这不仅影响了使用体验,还可能误触应用,造成不必要的麻烦。针

最便宜游戏机报价

最便宜游戏机报价

最便宜游戏机报价 快速筛选 多项筛选 品牌: 多选 更多 不限 索尼 微软 任天堂 摩奇 小霸王 琥珀 可欧 极度 六虹 禾维 铼德 随e游 爱动 极限矩

戴尔 Inspiron 灵越 14R 换壳版

戴尔 Inspiron 灵越 14R 换壳版

科技时代意见反馈留言板 电话:010-82628888-5595 欢迎批评指正 新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 通行

《地下城与勇士dnf》凯丽的强化器怎么得?有什么用?

《地下城与勇士dnf》凯丽的强化器怎么得?有什么用?

游戏攻略 当前位置: 快吧网游 攻略列表 《地下城与勇士dnf》凯丽的强化器怎么得?有什么用? 《地下城与勇士dnf》凯丽的强化器怎么得?有

刘德华祖籍哪里人?探寻巨星的根源

刘德华祖籍哪里人?探寻巨星的根源

1997 年,对于刘德华来说,是意义非凡的一年,这一年,他踏上了归乡之路,回到了广东江门新会荷塘镇镭步村,开启了认祖归宗之旅 。这一年

抖音主播等级铂金五到钻石一要多少分

抖音主播等级铂金五到钻石一要多少分

好久没给大家更新了,今天呢给大家分享一下,关于直播上最感兴趣的内容就是怎么去赚钱?收益是怎么计算的?别人赚了那么多的钱到底是从