文档详情

湖南理工学院成教学院毕业论文.doc

发布:2016-09-30约6.2千字共12页下载文档
文本预览下载声明
学号: 方正武 湖南理工学院成教学院 毕业论文(设计) 题 目: 浅析C++语言中多态性 作 者 年 级 2014 函 授 站 五大院校 专 业 计算机科学技术 指导老师 职 称 副 教 授 层 次 本 科 完成时间 2014.03 {封面纸推荐用210g/m2的白色铜板纸粘贴, 论文统一用A4纸打印。边距上 3cm,下 2.6cm,左 2.6cm,右 2.4cm。行距为固定值20磅。 该部分内容不打印。} 摘 要 本文通过分析C++语言多态性的各种形式、特征及其在程序设计中的应用,说明多态性是对相似问题求解的有效方法。 关键词:C++;多态性;面向对象;虚函数 【中文摘要共100—300个字,关键词3—7个词,中文摘要和关键词占一页,该部分内容不打印。】 目 录 摘 要 1 绪 论 3 1 实现形式及应用 3 1.1 强制多态 3 1.2 重载多态 4 1.3 包含多态 4 1.4 参数多态 8 结 论 10 参考文献 11 绪 论 C++语言具有封装、继承和多态性三大特征[1],多态性同时考虑了类的封装与继承关系的设计,是C++最重要的特征。在程序中多态性是指同一符号或名字在不同情况下代表不同但相似的功能[2],是对相似问题的一种求解方法。本文主要分析C++语言的多态性支持在程序设计中的应用。 实现形式及其应用 在C++面向对象程序设计中,实现多态性有两种基本形式:编译时多态和运行时多态[3]。编译时多态是指在程序编译阶段即可确定下来的多态性,包括强制多态和重载多态两种形式。运行时多态是指必须等到程序动态运行时才可确定的多态性,主要通过继承结合动态绑定获得,包括包含多态和参数多态两种形式。 1.1强制多态 当表达式中存在不同类型的操作数时,为对此表达式进行求值,编译程序需要对其中的部分操作数进行类型转换,以保证运算符两边的操作数类型一致,但体现出来的却是完成了不同类型操作数间的运算,这就是C++中的强制多态性。在C++中,“1+2”表示整数的加法,“1.0+2.0”表示浮点数的加法,而“1.0+2”需要作类型转换,实际进行浮点数加法,却表示整数与浮点数的相加。这两种运算的内部实现是不同的,而且效率相差很大,不便用不同的符号表达。同一个运算符“+”可以同时具有不同但相似的运算含义,体现的就是强制多态性[3]。C++中规定了基本数据类型之间的转换规则:如果运算符两边的操作数类型不一致,则总是将取值范围的最大值较小的类型转换为取值范围的最大值较大的类型,取值范围从大到小分别是:long double, double, float, unsiged long, long, unsigned, int。正是由于这种多态性,才简化了程序设计,可以按相同的逻辑处理各种数据的加法。不过在C++中,强制多态性是有限的,不能用这一方法去解决许多类似问题,而重载多态提供了另外一种途径。 1.2 重载多态 重载多态主要通过使用重载机制获得,包括函数重载和运算符重载。 运算符重载允许重新定义C++语言已经有的运算符,以一种更加自然的方式使用自己定义的类类型。例如,加法运算符“+”表示整数或浮点数的加法。如果用户定义了一个复数类Complex,在类定义中对加法运算符“+”进行了重载:Complex operator +(const Complex other) {…},那么使用复数类声明两个对象Complex obj1,obj2; 后,就可以直接使用obj1+obj2表示复数求和的操作,使得程序语言更接近习惯用法。C++语言中颇具典型的例子就是运算符“”和“”的重载。在C语言中,利用库函数printf()输出或scanf()输入时需要用参数指明输出或输入的数据类型才可正确输出或输入,而在C++中,由于在ostream类和istream类中大量重载了“”和“”,C++的内部数据类型编译器能主动判别并正确输入输出,使用起来非常方便。如:cout”x=”x”y=”yendl; 无论x和y是什么类型,都可按上面的语句输出,C++会自动调用合适的运算符满足要求。当然,用户只需要定义重载””和””的操作,同样可以象上例那样方便地输入输出自定义数据类型。 函数重载允许程序员用相同的名字定义两个或两个以上的C++函数,使得语义相似的函数可以用同样的标识符来命名。例如对构造函数的重载,可使程序对类对象有多种不同的途径进行初始
显示全部
相似文档