【大发棋牌大厅】了解C++的装、继承和多态

  • 时间:
  • 浏览:0
  • 来源:大发快三app-大发快3官网app

了解C++的装、继承和多态

  • 2019/7/1 10:56:17
  • 类型:原创
  • 来源:电脑报
  • 报纸编辑:电脑报
  • 作者:

【电脑报在线】近期重新看后一下C++,一是感觉清晰了你是什么 ,二是确实 若是换个层厚看一句话,会有不一样的体会,否则也容易记住C++中的你是什么 型态。

近期重新看后一下C++,一是感觉清晰了你是什么 ,二是确实 若是换个层厚看一句话,会有不一样的体会,否则也容易记住C++中的你是什么 型态。本文就试图将集合论中的相关知识引入到C++的封装、继承、多态上,让大家对它有个重新的认识。

从代码的层厚而言,我认为计算机语言只能可不免的解决以下原本哪些地方的问提:

 1.为了构建大型的守护任务管理器,只能将代码模块化。C++中,由类的封装来实现。

 2.为了减少代码的冗余,只能实现代码共享。C++中,由类的继承和多态来实现。

一、封装

C语言中,代码之间的关系只能函数式的调用。这上面牵扯到对数据的操作,若操作的只能局部变量,那一切都太平了。但若是几条函数操作同原本非局部变量,考虑到模块化,这样 就要将变量和操作变量的函数整合在共同,这刚刚C++中的封装。

C++上面引入了class的概念,目的是封装数据和数据上的操作,使其成为原本独立的模块。若是将你是什么 独立的模块(代码和数据)想象成集合,那个class A的集合为:

图1

此时若再引入原本class B,则有下面某种机会性,情况表三、四实际上同类。

 

图2

情况表一,只只能封装就足够了。解决情况表二、三、四时,为了考虑代码共享,只能引入继承机制。

二、继承

大家先考虑情况表二,机会A和B有公共代码(成员函数机会是成员变量),故通常考虑将公共的部分定义为class C,否则由A、B去继承它。

图3

对于情况表三、四,大家不只能演变,直接让A继承B,机会B继承A即可。

若,此时引入class D,这样 情况表就会复杂性你是什么 。简单期间,以情况表二为扩展,考虑添加class D后的某某种。后续你要发现,情况表三、四同类。

图4

此时,最合理的最好的方法是引入五个类,class E, class F, class G, class H,如下图。E为基类,F、G、H为一级子类、A、B、D为二级子类。

图5

否则,你是什么 解决方案哪些地方地方的问提:

1.若是再添加class I,class J,那复杂性度就可想而知了。

2.确实 代码冗余是消除了,否则引入了五个类,也确实 有点儿多,更严重一句话会愿因“类泛滥”。

为了能统一解决添加的类D,大家将图四拆分成D和A,以及D和B的关系。另原本就转化为图二中的某种:情况表二。

图6

图六中,class H表示D和A的公共部分,class G表示D和B的公共部分。此种解法确实 有代码冗余,但简单了你是什么 ,事实上,大家你是什么 事先解决类,刚刚这样 解决的。

在你是什么 情况表下,若是添加class I,class J,都不能转化为:新添加类和已有类之间的单独关系,即图二中的某种情况表。

共同,本来能发现,大家无法在类的继承型态中完正消除代码冗余,愿因是多个类的情况表下,确实 是复杂性性。

当大家在使用哪些地方地方蕴藏继承型态的类的事先,考虑图二的情况表三,若B继承自A,这样 实际上B本来能当A用的,这很好理解,另原本A刚刚B的一部分。但若是,想让A代表B呢(实际上刚刚B对象,刚刚用的事先当A用),为了完美解决你是什么 哪些地方的问提,就要引入多态了。

三、多态

前面的分析可知,类之间的关系都不能复杂性为图二的情况表。图二的情况表三中,A当B用(实际上只能B对象)又分为以下某种情况表。第某种情况表有点儿别扭,机会是需求决定的吧。

1.使用B中的A部分。直接使用A操作即可。

2.使用B中的非A部分。只能将A转化为B才可使用。

3.B覆盖定义A的公共接口机会成员变量。当B作为A使用的事先,A中的公共接口机会成员变量是在非A中的,实现你是什么 机制的刚刚多态。

C++中,基类定义虚函数,子类不能重新实现它,以实现多态。令人奇怪的是,这样 虚成员变量的概念,我确实 机会有以下几条愿因:

1.没必要提供虚成员变量。父类的成员变量属于存储空间,是不能直接用。不像函数,属于代码无法直接替换。

2.机会编译器要实现你是什么 会复杂性性吧。

3.封装的概念是少暴露成员变量,只暴露接口。否则,好的类的设计是这样 公共的成员变量的,也就不位于虚成员变量一说了。

否则,从完正性的层厚而言,应该提供虚成员变量的。

四、总结

      上面的分析不能看出,引入集合,刚刚说明我试图用某种简单的最好的方法来描述C++的封装、继承和多态。所有的源头,只能机会在C++中引入了封装机制,也刚刚传说中的面向对象。继承和多态只能随之而来的,顺着这条路径走下去,你要发现C++上面的变量的可视性(public, protected, private)等只能源自于上面描述的集合之间的关系。而所有的哪些地方地方,刚刚用来解决原本哪些地方的问提:模块化和代码共享。

本文出自2019-07-01出版的《电脑报》2019年第25期 A.新闻周刊 (网站编辑:zoey)

发表给力评论!看新闻,说两句。

匿名 ctrl+enter快捷提交

网站地图 | 版权声明 | 业务商务企业合作 | 友情的一句话链接 | 关于大家 | 招聘信息

报纸客服电话:1006677866 报纸客服信箱:pcw-advice@vip.sina.com 友情的一句话链接与商务企业合作:987349267(QQ) 广告与活动:671009(QQ) 网站联系信箱:cpcw@cpcwi.com

Copyright © 1006-2011 电脑报官方网站 版权所有 渝ICP备1009040号

猜你喜欢

飞艇app官网-3分飞艇app官网AMD京东618火热进行中 返场季大促等你来

AMD京东618火热进行中返场季大促等你来......AMD京东618活动可能性接近尾声了,相信广大用户在非常火热飞艇app官网-3分飞艇app官网的一个多多 阶段中都购买

2020-02-22

【3分快三规律】一加宣布与EE达成合作 明年将发布欧洲首款商用5G手机

《一加组阁 与EE达成相互合作明年将发布欧洲首款商用5G手机》文3分快三规律章原因分析分析分析归档,不再展示相关内容,编辑建议你查看最新于此相关的内容:相比5G手机售价,5

2020-02-22

【时时彩赢钱诀窍】巴吉度猎犬的价格 一般在2000到9500元之间

巴吉度猎犬的价格,通常当我们都 在养狗狗的完后 ,首先真难选购一只狗狗吧。必须 当我们都 了解不了解,关于狗狗的价格呢。但会 当我们都 知道狗狗的价格有完后

2020-02-22

快乐平台app第五代苹果Apple Watch渲染图曝光 重新加入陶瓷版本

随着苹快乐平台a快乐平台apppp果苹果苹果 苹果苹果苹果 发布会的日益临近快乐平台快乐平台appapp,过多有关苹果苹果苹果 苹果苹果苹果 今年即将发布的新品信息被曝

2020-02-22

【台湾5分彩_极速赛车pk10开奖记录】哈威那犬智商排名 哈威那犬智商排名在第84位

哈威那犬智商排名,在亲戚亲戚一些人身边有统统 亲戚一些人会养宠物狗,而哈威那犬是这名 短腿小型犬,性格活泼可爱,不怎么能是在美国地区是比较受欢迎的。您

2020-02-22