- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[PPT模板]第 5 章 模板 2011
[例1]:向量类模板定义。 templateclass T class Vector { T *data; int size; public: Vector(int i) { data=new T[i]; } ~Vector() { delete[] data; } T operator[](int i) { return data[i]; } }; [例2]:一个单链表类模板的定义。 template class T class List{ //定义通用单链表类模板List,有一个模板参数T public: List(); //声明构造函数 void Add(T ); //声明增加结点的成员函数 void Remove(T ); //声明删除结点的成员函数 void PrintList(); //声明打印链表的成员函数 ~List(); //声明析构函数 protected: struct Node{ //定义结点的结构类型 Node *pNext; //指向下一个结点的指针成员 T data; //本结点的数据成员 }; Node *pHead; //指向链表头结点的指针 }; 2) 在类定义体外定义成员函数 如果在类定义体外定义成员函数时,如果该成员函数中有模板参数,则需先进行模板声明,而且用类模板名,而不是用类名来限定函数名,即在函数名前的类名后缀上“T”。其一般形式为: template class 类型参数名1, class 类型参数名2, … 函数返回值类型 类名类型参数名1, 类型参数名 2, …::成员函数名(形参表) { … //函数体 } [例]:类模板List中成员函数Add()和Remove()在类体外定义。 templateclass T void ListT::Add(T t) // 定义增加结点的成员函数 { Node* temp=new Node; // 向堆内存申请一个结点的内存空间 temp-data=t; // 将数据t赋给新结点的data数据成员 temp-pNext=pHead; // 将链表头指针赋给新结点的pNext pHead=temp; // 将新结点的地址赋给头指针 } templateclass T void ListT::Remove(T t) // 定义删除结点的成员函数 { …… } 2. 类模板的使用 使用类模板时首先把它实例化成一个具体的类(即模板类)。 把类模板实例化为模板类的格式如下: 类名具体类型名 然后再说明模板类的对象并使用这些对象完成所需要的功能。 与函数模板不同的是:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化为对象必须由程序员在程序中显式地指定。 其实例化为对象的一般形式是: 类名 实际的数据类型1, 实际的数据类型2, … 对象名; [例]: Listint intList; 表示将类模板List的类型参数T全部替换成int 型,从而创建一个具体的整型链表类,并生成该具体类的一个对象intList。 Listchar charList; 表示将类模板List的类型参数T全部替换成char 型,从而创建一个具体的字符链表类,并生成该具体类的一个对象charList。 [比较]:类模板与模板类的区别。 类模板是模板的定义,不是一个实实在在的类,定义中用到通用类型参数。 模板类是实实在在的类定义,是类模板的实例化。类定义中参数被实际类型所代替。 [例]: 见书第350页例11.5。 3. 类模板的派生 既可以从类模板派生出类模板,也可以派生出普通类(非模板类)。主要有以下几种形式: 从类模板派生出类模板; 从类模板派生出普通类; 从普通类派生出类模板。 1) 从类模板派生出类模板 从类模板派生出新的类模板的格式如下所示: template class T class Base { …… }; template class class Derived: public Base T { …… }; 与定义一般派生类的格式类似,只是在指出它的父类时要加上模板参数。如,Base T。 [例]:见书第354页例11.6。 2) 从类模板派生出普通类 从类模板派生出一个普通类的格式如下所示
您可能关注的文档
- [PPT模板]星星知我心2.ppt
- [PPT模板]李宁店面空间管理与陈列生动化资料.ppt
- [PPT模板]模板与STL.ppt
- [PPT模板]毕业答辩ppt模板-北京中医药大学.ppt
- [PPT模板]毕业答辩ppt模板-厦门大学嘉庚学院.ppt
- [PPT模板]毕业答辩ppt模板.ppt
- [PPT模板]汽车类售后培训.ppt
- [PPT模板]流程图PPT模板.ppt
- [PPT模板]海阳2012第三届亚洲沙滩运动会招商手册.pdf
- [PPT模板]消防工作概述2.ppt
- 2026版高三一轮总复习(数学)70 第八章 第2课时 两条直线的位置关系.pptx
- 2023年传媒行业:现象级产品ChatGPT出现,AIGC商业化推进,赋能多元应用.pdf
- 2023年创梦天地分析报告:深耕自研产品生态,构筑游戏社区未来.pdf
- 2023年城投债:人口迁徙与产业模型.pdf
- 2023年充电桩行业分析报告.pdf
- 汽车电梯知识培训课件.ppt
- 2026版高三一轮总复习(数学)47 第五章 第3课时 平面向量的数量积及其应用.pptx
- 统编版(2024)一年级下册语文17 小猴子下山 课件.pptx
- 2026版高三一轮总复习(数学)62 第七章 第5课时 空间直线、平面的垂直.pptx
- 宁强县2024-2025学年度第二学期期末学业水平检测:八年级英语试题(卷).docx
文档评论(0)