C++——虚函数(virtual)

本文详细介绍了C++中的虚函数,探讨了面向对象的多态性,包括静态多态和动态多态,并通过实例解释了虚函数表和虚析构函数在防止内存泄漏中的作用。同时,提到了虚函数表在对象实例内存中的位置及其构建时间。
摘要由CSDN通过智能技术生成

写在前面

这一篇博客记录一下自己理解的虚函数的相关内容。虚函数在刚开始学习C++的时候并不理解为什么需要这个东西?现在觉得要理解这个概念,需要对面向对象编程这个软件设计模式要有了解。学习C++不光要能理解语法特征,还要明白一些常用的软件设计模式。 这篇博客我也还是会结合一些网络上的资料,加上自己的理解阐述一下对虚函数的理解。

参考资料

面向对象的三大特点

之前也有说过,虚函数与面向对象编程关联很大,所以在了解虚函数之前,可以先加强对“面向对象编程”的理解。面向对象的三大特点:

  • 多态
  • 封装
  • 继承

面向对象中的对象具体是什么概念可以用生活中的东西类比。比如说汽车,我们用语言描述车的时候,脑海里就会浮现车的相关信息:四个轮子、一个外壳、四个车灯、一个方向盘…等。所以程序中我们也可以用对象来描述汽车这种生活中实际的物体。当然,程序要处理的事务千奇百怪,对象可能在生活中有实际对应的(比如汽车、动物)、也有可能是没有实物但存在人们认知中的(比如数据表、一个窗口)、甚至仅仅是逻辑上的概念(比如图形、 车辆这种宽泛的概念)。

所以,对于对象有一个大概的了解,不难理解多态了。汽车有很多种类:轿车、货车、巴士等等;动物也有很多种类:老虎、狮子等等。这些分类的物体也可以看做对象,这些对象与原来的大类对象(比如汽车、动物)体现了一种继承的关系。

而轿车、货车、巴士等多种种类的汽车与大类对象:汽车还是有很多相同的地方,比如:四个轮子,一个方向盘,那么在实际编程过程中,我们希望子类的相同属性能够用尽量少的代码来描述,这样更多的精力就可以放在不同子类的差异上了。那么同样是汽车,四个轮子,可以轿车、货车、巴士具体种类的车辆时,轮子大小不同,但是都是四个轮子啊,所以这里就体现了多态。反正都是汽车,肯定有四个轮子,如果在需要确定汽车种类的时候,我们再决定轮子大小,不需要确定种类的时候,关注汽车的轮子特点就好了。

而封装则通过public、private这些关键字体现。一个对象具有自己的成员变量与成员函数,封装给对象提供了对象之间交互的方法,其他对象或者程序员可以通过这个对象提供的对外接口使用对象,同时对象也能封装自己的关键属性。还是举汽车为例子,咱们开汽车只需要能打开车门、能启动发动机等一些简单功能,但是汽车公司肯定不希望我们能轻易修改汽车的电力系统、发动起机械系统。所以汽车公司就将这些系统封装了,而我们用户只需要使用一些简单的操作࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值