【pk10平台代理-好运pk10平台代理】了解C++的装、继承和多态

  • 时间:
  • 浏览:0

了解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快捷提交

网站地图 | 版权声明 | 业务协作 | 情人关系链接 | 关于让让当我们 | 招聘信息

报纸客服电话:2006677866 报纸客服信箱:pcw-advice@vip.sina.com 情人关系链接与协作:987349267(QQ) 广告与活动:6720009(QQ) 网站联系信箱:cpcw@cpcwi.com

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