(7.6)--7.6 类模板与友元面向对象程序设计.ppt

上传人:奉*** 文档编号:96638944 上传时间:2024-02-01 格式:PPT 页数:10 大小:178.99KB
返回 下载 相关 举报
(7.6)--7.6 类模板与友元面向对象程序设计.ppt_第1页
第1页 / 共10页
(7.6)--7.6 类模板与友元面向对象程序设计.ppt_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《(7.6)--7.6 类模板与友元面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《(7.6)--7.6 类模板与友元面向对象程序设计.ppt(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 类模板与友元类模板与友元在此输入您的封面副标题类模板与友元有三种情况:(1)函数、类、类的成员函数作为类模板的友元;(2)函数模板作为类模板的友元;(3)类模板作为类模板的友元。函数、类、类的成员函数作为类模板的友元template /顺序表类模板定义class SeqLn public:SeqLn():size(0)/类模板的构造函数SeqLn()/类模板的析构函数void Insert(const T&m,const int i);/数据类型为模板形参TT Delete(const int i);/返回值类型为模板形参Tint LnSize()const return size;frie

2、nd void Success()cout顺序表构造完成endl;/普通的函数作为类模板的友元private:T arrLen;/数据元素的类型为模板形参T,Len为常量,数组的大小int size;template /成员函数Insert的模板定义void SeqLn:Insert(const T&m,const int nst)/将m插入到arr数组中下标为nst的位置if(nstsize)/判断插入位置nst是否合法cerrnst Error!endl;exit(1);if(size=Len)/判断顺序表是否已满,若已满则不能做插入操作cerrthe List is over,cant

3、insert any data!=nst;i-)arri+1=arri;/将下标为size到nst范围内的元素依次向后移动一个位置 arrnst=m;/将m写入arrnst处 size+;/顺序表长度加1template /成员函数Delete的模板定义T SeqLn:Delete(const int nst)/删除数组arr中下标为nst的元素 if(nstsize-1)/判断删除位置nst是否合法cerr删除位置错误!endl;exit(1);if(size=0)/判断顺序表是否为空,若为空则不能做删除操作cerrthe List is null,no data can be delete

4、d!endl;exit(1);T temp=arrnst;/取出arrnst到临时变量temp中for(int i=nst;i=size;i+)/将下标为nst到size范围内的元素依次向前移动一个位置arri-1=arri;size-;/顺序表长度减1return temp;/返回temp变量中存储的arrnst的值int main()int i;SeqLnc_List;/定义char型顺序表类对象SeqLni_List;/定义int型顺序表类对象 Success();return 0;函数模板作为类模板的友元template /顺序表类模板定义class SeqLn public:.tem

5、plate friend void Display(SeqLn&mySeqLn);template friend void Tranform(SeqLn&src,SeqLn&dest);.;template /类模板的友元函数模板Display的定义void Display(SeqLn&mySeqLn)for(int i=0;imySeqLn.size;i+)coutsetw(5)mySeqLn.arri;if(i+1)%8=0)/每行输出8个元素coutendl;template/类模板的友元函数模板Tranform的定义 void Tranform(SeqLn&src,SeqLn&dest

6、)/功能是将SeqLn类的顺序表src转换为SeqLn类的顺序表dest dest.size=src.size;/将src顺序表的长度赋值给dest顺序表的长度 for(int i=0;isrc.size;i+)/将src顺序表中所有元素强制类型转换为T类型的后存储到dest顺序表相对应的位置中dest.arri=T2(src.arri);int main()int i;SeqLnc_List;/定义char型顺序表类SeqLn的对象SeqLni_List;/定义int型顺序表类SeqLn的对象 c_List.Insert(a,0);c_List.Insert(b,0);c_List.Inse

7、rt(c,0);cout转换前的数据列表:;Display(c_List);/输出转换前的结果coutendl;CharToInt(c_List,i_List);cout转换后的数据列表:;Display(i_List);/输出转换后的结果程序运行结果:转换前的数据列表:c b a转换后的数据列表:99 98 97类模板作为类模板的友元template class B;/说明B是个类模板template /顺序表类模板的定义class SeqLn public:.template friend class B;/说明类模板B是类模板SeqLn的友元 .;template/类模板B的定义class Bpublic:void func()SeqLn sq;sq.Insert(10,0);Display(sq);int main()B b;b.func();return 0;B类是SeqLn类的友元,任何从B模板实例化出来的类都是任何从SeqLn实例化出来的类的友元

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com