资源描述:
《C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++7.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章模板参数多态性类模板函数模板参数多态性常规解决把数据类型定义为一个抽象的、需根据具体问题要求确定的数据类型。#includeclassComplex{private:DataTypereal;DataTypeimag;public:Complex(DataTypex=0,DataTypey=0):real(x),imag(y){}~Complex(){}ComplexAdd(constComplexx)const;ComplexSubtract(constComple
2、xx)const;ComplexMultiply(constComplexx)const;ComplexDivide(constComplexx)const;voidshow(void)const;};……//complex.cpp#defineDataTypefloat#include“Complex.h”voidmain(void){Complexx(1.1,1.1),y(2.2,2.2),z1;z1=x.Add(y);cout<<“z1is:”;z1.show();}模板提供了一种基于类型参
3、数生成类或函数的机制。分类函数模板:将函数中的数据类型作为参数设计类模板:把类中成员变量的数据类型作为参数设计实例化向模板传入实际的类型参数,形成模板函数和模板类。模板函数模板模板函数类模板模板类对象对象参数实例化参数实例化C++模板声明格式template<模板参数表><模板定义体>模板参数表由关键字class和模板形参组成,多个模板形参用逗号隔开模板定义体是该模板的作用体,可以是函数,类或类的成员函数类模板设计template<模板形参表>class<类名>{<类模板体定义>};使用显示方式给
4、类模板传递实例化参数参数化的数据类型参数化的数据类型用模板形参表示例7.2复数类模板#includetemplateclassComplex{private:Treal;Timag;public:Complex(Tx=0,Ty=0);~Complex(){}ComplexAdd(constComplexx)const;ComplexAdd(ConstTx)const;voidshow(void)const;};templateComplex<
5、T>::Complex(Tx,Ty){real=x;imag=y;}templateComplexComplex::Add(constComplexx)const{returnComplex(real+x.real,imag+x.imag);}templateComplexComplex::Add(constTx)const{returnComplex(real+x,imag);}TemplatvoidCom
6、plex::show(void)const{cout<<“realis”<x(1.1,1.1),y(2.2,2.2),z;z=x.Add(y);cout<<"zis:";z.show();Complexu(1.1,1.1),v(2.2,2.2),w;w=u.Add(v);cout<<"wis:";w.show();}函数模板定义语句:template<
7、模板形参表>返回类型函数名(函数模板形参表)使用调用时用实际需要的数据类型参数替换模板形参。例7.3函数模板#includetemplateTmax(Tx,Ty){if(x>y)returnx;elsereturny;}voidmain(void){intiX=5,iY=8,intZ;floatfX=5.6,fy=8.9,fZ;iZ=max(iX,iY);fZ=max(fx,fy);}