【时时彩app最新版下载-极速时时彩app最新版下载】了解C++的装、继承和多态

  • 时间:
  • 浏览:2
  • 来源:5分11选5平台-5分11选5官方

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

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

【电脑报在线】近期重新看过一下C++,一是感觉清晰了某些,二是并不一定若是换个淬硬层 看说说,会有不一样的体会,只是也容易记住C++中的某些型态。

近期重新看过一下C++,一是感觉清晰了某些,二是并不一定若是换个淬硬层 看说说,会有不一样的体会,只是也容易记住C++中的某些型态。本文就试图将集合论中的相关知识引入到C++的封装、继承、多态上,当我们对它有个重新的认识。

从代码的淬硬层 而言,我认为计算机语言一定会可不免的解决以下3个问題:

 1.为了构建大型的tcp连接池池,要能 将代码模块化。C++中,由类的封装来实现。

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

一、封装

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

C++后边引入了class的概念,目的是封装数据和数据上的操作,使其成为3个独立的模块。若是将某些独立的模块(代码和数据)想象成集合,那个class A的集合为:

图1

此时若再引入3个class B,则有下面三种只是性,状况三、四实际上例如于。

 

图2

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

二、继承

当我们 先考虑状况二,只是A和B有公共代码(成员函数只是是成员变量),故通常考虑将公共的帕累托图定义为class C,只是由A、B去继承它。

图3

对于状况三、四,当我们 不不能 演变,直接让A继承B,只是B继承A即可。

若,此时引入class D,能要能了状况就会简化某些。简单期间,以状况二为扩展,考虑加上class D后的某三种。后续让人发现,状况三、四例如于。

图4

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

图5

只是,某些解决方案有问題:

1.若是再加上class I,class J,那简化度就可想而知了。

2.并不一定代码冗余是消除了,只是引入了3个类,也并不一定很糙多,更严重说说会愿因“类泛滥”。

为了能统一解决加上的类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)等一定会源自于后边描述的集合之间的关系。而所有的哪此,只是用来解决3个问題:模块化和代码共享。

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

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

匿名 ctrl+enter快捷提交

网站地图 | 版权声明 | 业务合作法律法律依据 法律法律依据 | 感情的说说链接 | 关于当我们 | 招聘信息

报纸客服电话:60 6677866 报纸客服信箱:pcw-advice@vip.sina.com 感情的说说链接与合作法律法律依据 法律法律依据 :987349267(QQ) 广告与活动:6760 09(QQ) 网站联系信箱:cpcw@cpcwi.com

Copyright © 60 6-2011 电脑报官方网站 版权所有 渝ICP备60 09040号