【分分pk10app客户端下载】了解C++的装、继承和多态

  • 时间:
  • 浏览:0
  • 来源:彩神快三网站

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

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

【电脑报在线】近期重新看了一下C++,一是感觉清晰了但是 ,二是虽然若是换个层厚看一句话,会有不一样的体会,但是也容易记住C++中的但是 形状。

近期重新看了一下C++,一是感觉清晰了但是 ,二是虽然若是换个层厚看一句话,会有不一样的体会,但是也容易记住C++中的但是 形状。本文就试图将集合论中的相关知识引入到C++的封装、继承、多态上,让亲戚亲戚亲们 对它有个重新的认识。

从代码的层厚而言,我认为计算机语言完整篇 都是可不免的处理以下3个 多 问题图片图片:

 1.为了构建大型的任务管理器运行,都可以 将代码模块化。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快捷提交

网站地图 | 版权声明 | 业务战略媒体合作 | 友情链接 | 关于亲戚亲戚亲们 | 招聘信息

报纸客服电话:806677866 报纸客服信箱:pcw-advice@vip.sina.com 友情链接与战略媒体合作:987349267(QQ) 广告与活动:678009(QQ) 网站联系信箱:cpcw@cpcwi.com

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