- 19
- 0
- 约2.68万字
- 约 28页
- 2018-03-23 发布于河南
- 举报
C++程序设计教程第10章.pdf
第 10章 多 态 性 教学提示:多态性是面向对象程序设计中最重要的特性之一。直观地讲,多态是指类
族中具有相似功能的不同函数使用同一名称来实现,从而可以使用相同的调用方式来调用
这些具有不同功能的同名函数。又称为“ 同一接口,多种方法”。从实现的角度来讲,多态
可以划分为两类:编译时的多态和运行时的多态。前者是在编译的过程中确定了同名操作
的具体操作对象,称为静态多态,如函数重载和运算符重载;而后者则是在程序运行过程
中才能动态地确定所针对的具体对象,称为动态多态。在C++面向对象程序设计中,动态
多态是通过虚函数来实现的,即在类等级的不同层次中,可以说明名字、参数特征和返回
值类型都相同的虚拟成员函数;而在不同层次的类中,虚函数的实现算法各不相同。虚函
数机制使得程序员能够在一个类等级中使用相同函数的多个不同版本,在运行时刻才根据
接收消息的对象所属的类,动态地决定具体执行哪个特定的版本,这称为动态联编。 多态性机制可以用同一个名字实现多个不同版本,增加了面向对象软件系统的灵活性,
进一步减少了冗余信息。同时当需要扩充程序增加所要处理的实体种类时,仅需定义新的
派生类并在新派生类中定义所需要的虚函数即可,显著提高了软件的可重用性和可扩充性。 本章主要学习运算符重载、虚拟函数实现和动态联编的实现机理等。 学习目标: 理解静态联编和动态联编的概念; 掌握运算符重载的实现方法; 了解虚拟函数和动态联编对实现动态多态的作用; 理解纯虚拟函数和抽象类的概念和实现方法; 了解虚拟析构函数的概念和作用,掌握其声明和使用方法; 理解动态联编的实现机理,学会使用动态多态特性解决实际问题。 10.1 静态联编与动态联编 所谓联编 Binding ,就是使计算机程序的不同部分彼此关联的过程,也就是把一个标
识符名和一个存储地址联系在一起的过程;用面向对象的术语讲,就是把一条消息和一个
对象的方法相结合的过程。根据联编工作所处的阶段不同,可以区分出两种不同的联编方
法,分别为静态联编和动态联编。
10.1.1 静态联编 联编工作在编译链接阶段完成,称为静态联编。因为所有联编过程都在程序开始运行
之前完成,因此也称为先前联编或早期联编。在编译链接过程中,编译器根据类型匹配等
特征确定程序中操作调用与执行该操作的代码关系,即确定某一同名标识到底要调用哪一 第 10章 多态性 ·295 ·
段程序代码,然后由链接器接管这些标识符,并用物理地址代替它们。静态联编的优点是
执行速度快,运行时的开销仅仅是传递参数、执行函数体、清除栈等。 在面向对象程序设计中,静态多态有普通成员函数重载和运算符重载,可以通过静态
联编解决。本节讨论普通成员函数重载的实现机理,运算符重载将在本章第2 节中详细讨论。 普通成员函数的重载有以下两种形式。 1. 在同一个类中重载 在同一个类中说明名字相同、参数特征不同的多个成员函数,如前面讲过的构造函数
的重载和成员函数的重载,编译时根据函数参数类型的不同或参数个数不同,能够确定调
用函数的代码。 2. 在派生类中重载基类的成员函数 在派生类中说明与基类同名,参数完全相同的成员函数。编译时通过以下两种形式区
分重载函数。 1 使用作用域分辨符加以区分,例如: Circle::area 调用Circle 类中的成员函数area Point:: area 调用Point类中的成员函数area 2 根据对象类型来区分。例如: c.area 调用 Circle::area p.area 调用 Point::area cptr- area 调用 Circle::area pptr- area 调用 Point::area 其中c 和p 分别是Circle 类和Point 类的对象,cptr 和pptr 分别是指向Circle 类和Point
类的指针。 【例10.1】 编译时的多态性 静态联编 的实现。 // ch10_1.cpp, 编译时的多态性 静态联编 的实现 #include class Point //类Point 的定义 public: Point double i 0, double j 0 x i, y j; double area //返回点的面积 0.0 cout 点的面积:; return 0.0; protected: double x,y; //点的坐标 ; const double pi 3.14159; class Circle : public Point //类Circle 的定义 public: Circle double i 0, double j 0, double r 1 : Point i,j radiu
您可能关注的文档
- A967-05-chemical passivation SS.pdf
- AAN036e_Paints_and_Coatings.pdf
- AA_P-DP_1624_1.0_Process_Data_Sheet_--_Feed_Gas_Cooler__unshifted_.pdf
- ABAQUS connector用法.pdf
- ABAQUS_connector用法.pdf
- ABB Control Builder V2_1.pdf
- ABB(S4C IRB) 机器人操作培训说明书 完整版 .doc
- abba直线导轨样本.pdf
- abb质量流量计FCM2000+chinese+operate+manual.pdf
- Abiotic stress-inducible receptor-like kinases negatively control ABA signaling in Arabidopsis.pdf
- 2026江西南昌市市场监督管理执法稽查局招聘仓库管理人员1人备考题库及一套参考答案详解.docx
- 2026江苏省常州市体育运动学校招聘排球教练1人备考题库及完整答案详解.docx
- 2026江苏苏州张家港农商银行寒假实习招募备考题库及完整答案详解一套.docx
- 2026浙江台州银行1月份招聘备考题库及完整答案详解一套.docx
- 2026江苏扬州市侨城社区(筹)公益性岗位招聘1人备考题库及完整答案详解.docx
- 2026广西桂林市象山区政府招聘编外聘用人员2人备考题库精编答案详解.docx
- 2026江苏南京江北新区退役军人服务中心招聘编外人员6人备考题库及参考答案详解1套.docx
- 2026广西玉林市博白县公安局第一次招聘警务辅助人员29人备考题库及一套完整答案详解.docx
- 2026广西玉林市福绵区樟木供销合作社招聘财务人员2人备考题库精编答案详解.docx
- 2026春季梦想靠岸招商银行西宁分行校园招聘备考题库及答案详解(新).docx
最近下载
- 地下车位租赁协议书通用版.docx VIP
- nsr621rf-d电容器保护测控装置技术使用说明书.pdf VIP
- 19G518-3_门式刚架轻型房屋_钢结构_有吊车_.docx VIP
- 2025公安大学警务硕士真题及答案.docx VIP
- 火电厂烟气脱硫工程调整试运及质量验收评定规程.PDF VIP
- 帝人芳纶应用介绍.doc VIP
- 《黄酒酿造工艺》课件.ppt VIP
- 深度解析(2026)《JBT 8521.2-2025编织吊索 安全性 第2部分:一般用途合成纤维圆形吊装带》:构筑新时代工业安全的核心支柱与前瞻指南.pptx VIP
- 2026房东直租房屋租赁合同.docx VIP
- V03英国深海控制器DSE5220模块操作說明書.pdf
原创力文档

文档评论(0)