多态问题

多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法。但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么?


将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3,它们3个都是可以作为存储但是也各不相同。如果我在写驱动的时候,我用个父类表示外设接口,然后在子类中重写父类那个读取设备的虚函数,那这样电脑的外设接口只需要一个。但如果我不是这样做,而是用每个子类表示一个外设接口,那么我的电脑就必须有3个接口分别来读取移动硬盘、U盘以及MP3。若以后我还有SD卡读卡器,那我岂不是要将电脑拆了,焊个SD卡读卡器的接口上去?

所以,用父类的指针指向子类,是为了面向接口编程。大家都遵循这个接口,弄成一样的,到哪里都可以用,准确说就是“一个接口,多种实现“。

#C++工程师#
全部评论
了解一下rtti
点赞 回复
分享
发布于 2019-12-09 18:00
一定要看effective c++
点赞 回复
分享
发布于 2019-12-09 18:31
小红书
校招火热招聘中
官网直投

相关推荐

发个腾讯的吧,刚面完,以为是kpi,所以没录音,能写多少是多少点击查看详情自我介绍介绍项目1.java和其他语言的区别,比如c++,python,各个方面2.知道几种编程思想,比如面向对象等等3.知道的设计模式4.jvm结构、垃圾回收算法5.乐观锁CAS6.数据结构了解哪些7.排序算法呢,说一下快排,时间复杂度。空间复杂度8.计网1.OSI七层,作用2.http状态码,502如何查找排除3.http报文结构4.https的过程,三次握手,TLS四次握手等等,认证过程5.了解过哪些加密算法,什么是对称加密和非对称加密6.cookie和session了解过吗,区别,集群里,session在一个服务器,请求分配到了其他服务器,怎么解决这种情况说了一些以后,提示我想想redis、mysql7.websocket了解过吗,。。。。我不知道8.http有哪些请求方法,然后给我个场景,问我怎么解决,具体忘了,反正他最后引导我是用head(应该)9.ping用过吗,基于什么协议10.DNS解析过程、我还说了两种方法,递归,迭代,问我迭代体现在哪11.DOS攻击是什么12.TCP三次握手。四次挥手,各阶段的状态,为什么要三次握手、四次挥手,状态那还问我,SYN_RECV之前服务器是什么状态13.为什么要等待2MSL14.TCP   UDP区别、应用场景,问我,游戏用的是什么,腾讯会议呢?我答是QUIC,不晓得对不对15.我看你这是个前后端分离项目,那么跨域问题怎么解决。我不知道。。。。16.静态资源问题,后面提醒我用CDN17.TCP拥塞控制四个过程。TCP滑动窗口了解过吗,讲一下18.TCP、UDP格式操作系统1.内核态、用户态,切换方式2.进程线程,区别、协程了解过吗(协程不知道)3.一个进程,你发现cup使用率很高,你怎么排查,我猜与协程有关,就往这方面答了4.一个线程阻塞到这里了,你怎么解决,我还是从协程方面5.进程间通信方式。调度算法6.虚拟内存了解过吗7.分段分页的调度算法8.OOM了解过吗,怎么排查,怎么解决9.什么是死锁,如何避免、解决redis、mysql1.redis持久化机制2.redis的数据结构3.其他想不起来了。。。。字数超了 #腾讯# #腾讯一
点赞 评论 收藏
转发
2 3 评论
分享
牛客网
牛客企业服务