面向对象的程序设计chapter.ppt
《面向对象的程序设计chapter.ppt》由会员分享,可在线阅读,更多相关《面向对象的程序设计chapter.ppt(30页珍藏版)》请在三一办公上搜索。
1、1,第7章 模板,2,主要内容,参数多态性和模板类模板函数模板,3,7.1 参数多态性和模板,参数多态性问题引入在程序设计中往往存在这样的现象:两个或多个函数(或过程)的函数体完全相同。它们的参数类型和函数返回类型不同。例如:,int max(int x,int y)return(xy)?x:y;float max(float x,float y)return(xy)?x:y;Double max(double x,double y)return(xy)?x:y;,4,7.1 参数多态性和模板,参数多态性能否为上述这些函数只写出一套代码呢?解决这个问题的常规方法是使用宏定义。例如:#defin
2、e max(x,y)(xy)?x:y),5,7.1 参数多态性和模板,参数多态性宏定义带来的问题之一可能在不该替换的地方进行了替换。例如:class exapublic:int max(int,int);/此处宏扩展将导致语法错误/;,6,7.1 参数多态性和模板,参数多态性两种解决方法把类的数据类型定义为一个抽象的、需根据具体问题要求确定的数据类型。把类的数据类型定义为一个参数。即类的参数多态性。方法1举例:例7.1 设计一个适合于float类型和double类型的复数类。,7,7.1 参数多态性和模板,/Complex.h#includeclass Complexprivate:DataT
3、ype real;DataType imag;public:Complex(DataType x=0,DataType y=0):real(x),imag(y)Complex()Complex Add(const Complex x)const;,8,7.1 参数多态性和模板,/#define DataType float#define DataType double#include“Complex.h”void main(void)Complex x(1.1,1.1),y(2.2,2.2);z=x.Add(y);cout“z is:“endl;z.show();,9,7.1 参数多态性和模板
4、,方法1的缺点当一个外部程序中,如果同时存在几种不同的数据类型要求时,则这种通用类不能满足需要。,10,7.1 参数多态性和模板,模板(template)模板概念它可以实现类型参数化,即把函数或类中的数据类型定义为参数,从而解决参数多态性问题,实现代码可重用性。模板分类(按用途)函数模板类模板,11,7.1 参数多态性和模板,模板(template)参数实例化指给函数模板或类模板带入实际的类型参数。C+中把经过参数实例化的函数模板称为模板函数,把经过参数实例化的类模板称为模板类,12,7.1 参数多态性和模板,模板(template)模板、模板函数、模板类和对象之间的关系,13,7.2 类模板
5、,类模板的概念一个类模板(类属类)是一个带参数的类。类模板允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数或返回值,能取任意数据类型(包括系统预定义的和用户自定义的类型)。,14,7.2 类模板,类模板的设计template class 类名/template是一个声明模板的关键字。模板形参表可包括一个或一个以上的模板参数。每个模板参数前加关键字class。例如:class T1,class T2,,15,7.2 类模板,类模板的设计在类定义中参数化的数据类型用模板形参表示。在类定义体外定义成员函数时,若此成员函数中有模板参数存在,则需在函数体外进行模板声明,并在函数名前的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 chapter
链接地址:https://www.31ppt.com/p-5674291.html