湖南理工学院成教学院毕业论文.doc_第1页
湖南理工学院成教学院毕业论文.doc_第2页
湖南理工学院成教学院毕业论文.doc_第3页
湖南理工学院成教学院毕业论文.doc_第4页
湖南理工学院成教学院毕业论文.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学 号 : 方方 正正 武武 湖南理工学院成教学院 毕毕业业论论文文(设设计计) 题 目: 浅析浅析 C+C+语言中多态性语言中多态性 作 者年 级 2014 函 授 站五大院校专 业计算机科学技术 指导老师职 称副 教 授 层 次本 科完成时间 2014.03 封面纸推荐用210g/m2的白色铜板纸粘贴, 论文统一用A4纸打印。边距上 3cm,下 2.6cm,左 2.6cm,右 2.4cm。行距为固定值20磅。 该部分内容不打印。 宋体加粗; 四号;居中。 楷体,三号。 居中。 按我院注册后统一编排 的学号填写; 楷体;四号; 时间必须 是毕业前 两三个月 第 0 页 共 11 页 摘 要 本文通过分析 C+语言多态性的各种形式、特征及其在程序设计中的应用,说明 多态性是对相似问题求解的有效方法。 关键词关键词:C+;多态性;面向对象;虚函数 【中文摘要共100300个字,关键词37个词,中文摘要和关键词占一页,该部分内容不打印。 】 字体:加粗黑体 字号:3 号 间距:居中,上下空一 行 字体:宋体 字号:小四号 行间距:20 磅 上空一行 字体:宋体,加粗 字号:小四号 第 1 页 共 11 页 目录 论文撰写完成后在 word 中点击“插入” “引用” “索引与目录” ,由 word 自动生成。 目 录 摘 要1 绪绪 论论3 1 实现形式及应用实现形式及应用3 1.1 强制多态3 1.2 重载多态4 1.3 包含多态4 1.4 参数多态 8 结结 论论10 参考文献参考文献11 字体:黑体 字号:三号 排版:居中,上下各 空一行 第 2 页 共 11 页 绪 论 C+语言具有封装、继承和多态性三大特征1,多态性同时考虑了类 的封装与继承关系的设计,是 C+最重要的特征。在程序中多态性是指同 一符号或名字在不同情况下代表不同但相似的功能2,是对相似问题的 一种求解方法。本文主要分析 C+语言的多态性支持在程序设计中的应用。 1实现形式及其应用 在 C+面向对象程序设计中,实现多态性有两种基本形式:编译 时多态和运行时多态3。编译时多态是指在程序编译阶段即可确定下 来的多态性,包括强制多态和重载多态两种形式。运行时多态是指必 须等到程序动态运行时才可确定的多态性,主要通过继承结合动态绑 定获得,包括包含多态和参数多态两种形式。 1.11.1 强制多态强制多态 当表达式中存在不同类型的操作数时,为对此表达式进行求值, 编译程序需要对其中的部分操作数进行类型转换,以保证运算符两边 的操作数类型一致,但体现出来的却是完成了不同类型操作数间的运 算,这就是 C+中的强制多态性。在 C+中, “1+2”表示整数的加法, “1.0+2.0”表示浮点数的加法,而“1.0+2”需要作类型转换,实际 进行浮点数加法,却表示整数与浮点数的相加。这两种运算的内部实 现是不同的,而且效率相差很大,不便用不同的符号表达。同一个运 算符“+”可以同时具有不同但相似的运算含义,体现的就是强制多 态性3。C+中规定了基本数据类型之间的转换规则:如果运算符两 边的操作数类型不一致,则总是将取值范围的最大值较小的类型转换 为取值范围的最大值较大的类型,取值范围从大到小分别是:long double, double, float, unsiged long, long, unsigned, int。正 第一级标题 字体:黑体;字号:小三号 排版:前面不空格,顶格打; 上下各空一行 第 3 页 共 11 页 是由于这种多态性,才简化了程序设计,可以按相同的逻辑处理各种 数据的加法。不过在 C+中,强制多态性是有限的,不能用这一方法 去解决许多类似问题,而重载多态提供了另外一种途径。 1.21.2 重载多态重载多态 重载多态主要通过使用重载机制获得,包括函数重载和运算符重载。 运算符重载允许重新定义 C+语言已经有的运算符,以一种更加自 然的方式使用自己定义的类类型。例如,加法运算符“+”表示整数或浮 点数的加法。如果用户定义了一个复数类 Complex,在类定义中对加法运 算符“+”进行了重载:Complex operator +(const Complex 后,就可以直 接使用 obj1+obj2 表示复数求和的操作,使得程序语言更接近习惯用法。 C+语言中颇具典型的例子就是运算符“”的重载。在 C 语言 中,利用库函数 printf()输出或 scanf()输入时需要用参数指明输出或输 入的数据类型才可正确输出或输入,而在 C+中,由于在 ostream 类和 istream 类中大量重载了“” ,C+的内部数据类型编译器能主 动判别并正确输入输出,使用起来非常方便。如:cout ”的操作,同样可以象上例那样方便地输入输出自定义数据类型。 函数重载允许程序员用相同的名字定义两个或两个以上的 C+函数, 使得语义相似的函数可以用同样的标识符来命名。例如对构造函数的重载, 可使程序对类对象有多种不同的途径进行初始化。运用 C+提供的函数重 载机制,对解决类似问题的函数可使用相同的名字,即进行重载: int abs(int x) double abs(long x) double abs(double x) 函数重载时使用的是静态绑定,编译器在编译时根据各个不同的参数 表选择调用相关版本的重载函数。这种多态性尤其便利于大型的程序设计。 函数重载适宜在函数实现的语义非常相近时使用,并且各个函数的参数表 必须保证编译器能分清该调用哪一个函数。 第 4 页 共 11 页 1.31.3 包含多态包含多态 在 C+中,包含多态性是指相同的函数名出现在不同的类中,而且这 样的函数必须是虚函数并以继承为基础的。使用包含多态性必须先设计一 个类层次,在类中使用虚函数(这个类叫多态类) ,结合动态绑定实现3。 公有派生类兼容基类,指向基类对象的指针变量可以指向其公有派生类的 对象,这就意味着一个公共的消息集既可以被送到基类对象,也可以被送 到其公有派生类的对象,那么就可以用一组相同的方法和逻辑来使用这个 类层次中不同类中的同名虚函数,而虚函数中定义的具体操作可以是不同 的,这是这种多态性的实质。以下是实例: #include using namespace std; class Member /成员基类 public: virtual void showme( ) coutshowme(); who= who-showme(); who= who-showme(); return; 运行结果为: I am a Member I am a Teacher I am a Student 基类指针 who 分别指向基类对象和两个不同的派生类对象,运行期间将根 据所指对象类型来动态绑定,决定调用哪一个类中定义的 showme()虚函 数版本。利用虚函数,可在基类和派生类中使用相同的函数名定义函数的 不同实现,从而实现“一个接口,多种方式” 。 当基类中无法给出虚函数的合理定义或软件设计需要构造更高层次的 抽象时,可以利用 C+提供的纯虚函数来设计包含多态性,含有纯虚函数 的类叫抽象类。例如,设计一个多态数据结构,要能存放矩形、圆等多种 图形数据,并提供计算相应图形面积的功能。可以抽取有关图形的共性设 计一个基类 GraphGraph,用纯虚函数描述共同行为:计算面积,再派生出各中 图形类给出具体实现方法。实现的代码如下: #include #include using namespace std; class Graph /抽象类 int x,y; public: 第 6 页 共 11 页 Graph(int x,int y):x(x),y(y) virtual double area()=0; /纯虚函数 void show() cout #include #include using namespace std; template /类模板声明以此开头 class Array int _size; TYPE *data; public: Array(int n); Array() delete data; TYPE int size() const return _size; ; 第 8 页 共 11 页 template Array:Array(int n)/在类模板声明之外,Array 与必须捆绑一起出现 if(n TYPE int i; for(i=1;i b(5); for(i=1;i=b.size();i+) bi=i+i/10.0; cout.precision(2); for(i=1;i=b.size();i+) coutsetw(5)bi ; coutendlendl; 第 9 页 共 11 页 结 论 多态性是解决相似性问题的有效工具,它简化了繁杂的程序设计逻辑, 增强了程序的可读性与可维护性,而且它表明 C+语言具有表示和处理更 高抽象的能力,使得程序设计可以在更高的层次上进行,为程序的正确性 证明和验证提供了方便。在 C+语言程序设计中有效地利用多态性,可以 提高程序地可扩充性、便捷性以及代码地再用率。 第 10 页 共 11 页 参考文献另起一页 字体:黑体 字号:小五号 排版:居中,上下各 空一行 参考文献 1 蔡明志.Borlan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论