- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[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) 从类模板派生出普通类 从类模板派生出一个普通类的格式如下所示
您可能关注的文档
最近下载
- 口腔诊所污水污物粪便处理方案及诊所周边环境情况说明.docx
- 《Hadoop大数据技术》课程理论教学大纲.pdf
- 内分泌科运用PDCA循环提高糖尿病患者对糖尿病足预防知识的知晓率品管圈成果汇报.docx
- 东芝电梯CV150数据说明.pdf
- 桩基础施工方案.docx VIP
- 国家级教学成果奖选题、申报、成果凝练与评审.ppt VIP
- 2024西安房地产市场年报.pdf
- 高中毕业生登记表(完整A4版).pdf VIP
- 缝纫机从入门到精通必读必威体育精装版(在重机JUKI工作余年退休的国内首席高水平机修工大作 李政)Part 课件.pptx
- XX农村商业银行股份有限公司合并清产核资报告书( 模板).doc
文档评论(0)