c++程序设计中的多态性技术探讨

c++程序设计中的多态性技术探讨

ID:11697554

大小:39.00 KB

页数:15页

时间:2018-07-13

c++程序设计中的多态性技术探讨_第1页
c++程序设计中的多态性技术探讨_第2页
c++程序设计中的多态性技术探讨_第3页
c++程序设计中的多态性技术探讨_第4页
c++程序设计中的多态性技术探讨_第5页
资源描述:

《c++程序设计中的多态性技术探讨》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计中的多态性技术探讨第6卷第6期2004年l2月黄山学院JournalofHuangshanUniversityVo1.6.NO.6Dec.2O04C++程序设计中的多态性技术探讨项芳莉(黄山学院计算机科学与技术系,安徽黄山245021)[摘要]在c++程序设计中,多态性理解为不同函数的同一接口.c++语言支持两种多态性:编译时的多态性和运行时的多态性.本文分剐给予详细介绍.通过重栽函数,重载运算符和虚函数三个方面对比介绍,能深入领会到多态性的意义和实现,并重点阐述了C++中虚函数的来龙去脉.[关键词]多态性重栽隐藏(超越)虚函数[中图分类

2、号]TP311[文献标识码]A[文章编号]1672—447X{2004)06—0017—05多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形.在程序设计领域.一个广泛认可的定义是"一种将不同的特殊行为和单个泛化记号相关联的能力".面向对象程序设计语言中,多态性表现为对象在接收到同样的函数调用时,会产生不同的执行动作的能力.多态性也有它的现实背景.比如一个经理第二天要到某地参加某个会议.他会把这同一个消息告诉给不同的人:他的夫人,秘书和下属.这些人听到消息后,会有不同的反应:夫人会为他准备行理,秘

3、书会为他安排机票和住宿,下属会为他准备相应的材料.这就是一种多态性:发给不同对象的同一消息会引起不同的结果.多态性源白面向对象编程语言,具体实现方式与语言密切相关.C++语言支持两种多态性:编译时的多态性和运行时的多态性.编译时的多态性是通过重载(函数重载和运算符重载)实现的,重载的函数在编译时就可以决定选用哪个函数:而运行时的多态性是通过继承和虚函数实现的,需要借助于抽象类和动态联编机制.动态联编是系统在运行时动态判断对象类型,根据对象实际的类型来动态决定调用哪一个函数的机制.C++的虚函数机制就提供了动态联编的能力.C++语言可以重载函数和操作符.

4、重载是在同一作用域内为一给定的函数名提供多个定义.编译器根据调用时所用的参数选择函数或操作符的正确版本.函数重载是C++程序获得多态性的途径之一.例如:doublemax(doubledl,doubled2){return(dl>d2)?dl:d2;}intmax(intil,inti2){return(i1>i2)?il:i2;}函数max是重载函数.它可用于如下的代码中:main(){inti=max(12,8);doubled=max(12.6,25.8);returni+int(d);)第一种情况中.要求取两个int类型变量的最大值

5、,调用函数max(int,int).但是,第二种情况中,参数类型是double,所以调用函数max(double,double).函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现.确定函数实现时,要求从函数参数的个数和类型上来区分.这就是说,进行重载函数时,要求同名函数在参数个数上不同,或者参数类型不同.否则,将无法实现函数重载.关于重载运算符我们一起看看.C++语言允许[收稿日期]2004一l1-I)5[作者简介]项芳莉(1971一),安徽歙县人,黄山学院计算机科学与技术系实验师17程序员重新定义已有的运算符,这种

6、重新定义是为了满足C++程序员的需要.使处理C++的运算符达到一种自然的方式.运算符重载与函数重载相似,其目的是设置某一运算符.让它具有另一种功能,尽管此运算符在原先C++语言中代表另一种含义.但他们彼此之间并不冲突.C++会根据运算符的位置辨别应使用哪一种功能进行运算.例如在下面的过程中,我们为矩阵类重载了运算符"+":CMatrixoperator+(CMatrix,CMatrix);然后使用下面的代码:inta=l,b=l,c;CMatrixA(3,3,0),B(3,3,1),C(3,3);c=a+b;C=A+B;在上面的例子中.我们定义了三个整

7、型变量和三个类CMatrix的实例变量,A,B和C均为3*3的矩阵,其中A中全部元素均置为O,B的全部元素均置为l.然后将"+"运算符作用于整型变量和类CMatirx的实例变量.这时,编译器将表达式c=a+b翻译为c=operator+(a,b);//operator+()是C++内部的运算符函数而将表达式C=A+B翻译为C=operator+(A,B)//重载operator+()运算符,使它能够计算两个矩阵类对象的和然后,根据传递参数的不同,调用不同的operator+数.运算符重载的实质就是函数重载.在实现过程中,首先把指定的运算表达式转化为对运

8、算符函数的调用,运算对象转化为运算符函数的实参.然后根据实参的类型来确定需要调用的函数重载运算

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。