C++灵魂所在之---多态的前世与今生

开头先送大家一句话吧:          

                                            

       众所周知,在20世纪80年代早期,C++在贝尔实验室诞生了,这是一门面向对象的语言,但它又不是全新的面向对象的语言,它是在传统的语言(C语言)进行面向对象扩展而来,但是它有些地方与C语言又有很多区别,又添加了很多C语言原来没有的内容与概念,所以有些地方是需要花时间去深入了解的。虽然这两者有密切关系,但是即使你很熟悉C语言,想要熟悉C++(先不说熟练掌握或者精通C++),还是得花很大一番功夫,光光是C++之中的三大特性就够研究好久的了。所以说学习C++的过程是一个漫长的过程,如果将来从事和C++(或者说其它任何一门优秀的语言)有关的工作,那么对语言的学习可能会贯穿一生,语言是一直发展而来的,所以说要想成为一个优秀的程序员,那么养成每天都学习一些新知识的习惯很重要,我从来都觉得一个人的习惯很重要,养成了每天学习的习惯,那么有一天突然没有学习,你会有一种今天有什么重要任务没有完成一样。但凡那些优秀的人,从来都有一个好的习惯,对于这一点我坚信不疑。好了,其它的也不多说了,千里之行,始于足下。        

       对于C++之中多态我准备分三个层次讲(当然这是我我理解上的三个层次,实际上这里面的内容远比我说的要多得多,也更深得多,我是由浅入深,根据所需要的挑着看吧,当然这里的深也只是相对的,如果说C++是一片海的话,那我也只能说我只是见识过浅滩上的风景,但是真正海底的神秘我还没有去研究,希望将来有机会可以研究到),如果只是单纯的想了解一下,就没有必要整篇都看。前几天写了在C++的学习过程中关于继承方面的一些知识,今天就写一写关于剩下的特性:多态(封装性需要说的内容比较少,所以就没有写)

       如果你只是想了解一下C++之中关于多态的知识,那么第一部分有你要的答案。如果你原本就对C++之中多态有了解,但是对是想了解内层的实现,那么最后一部分会满足你的好奇心!

      在这里我盗用一下王国维先生对于读书三境界的总结来作为我每一层次的小标题。

                                            

       按照我的习惯总是先从定义入手,当然这第一层次肯定了解定义是必须的。首先来看一下多态的定义:多态性的英文单词polymorphism来源于希腊词根poly(意为“很多”)和morph(意为“形态”),意思是具有多种形式或形态的情形,在C++语言中多态有着更广泛的含义。在C++之中多态的定义:多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息, 不同的对象在接收时会产生不同的行为(即方法)。借用网上的一个牛人对于C++之中多态总结的较好的三句话:一、“相同函数名”,二:“依据上下文”,三:“实现却不同”。个人感觉这三句话总结地很到位,在这里我就盗用一下。
        既然这是第一层次,所以在这里有必要先说一下关于C++之中对象的类型,先再看一张图:


               

         在了解了对象的类型之后有助于你更好地理解之后的内容。

        好了,说完定义之后,我们肯定要来说一说多态的分类了,还是以图的形式给出,这样比较直观,也便于大家去理解:


       接下来我们就来逐个分析一下:

       先来看一下静态多态:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推 断出要调用哪个函数,如果有对应的函数就调用该

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值