- 0
- 0
- 约3.25千字
- 约 29页
- 2022-05-27 发布于重庆
- 举报
12.7 类型安全的通用模板类 第一页,共二十九页。 12.7.1 单链表类 单向链表结点= 数据结点 + 链指针结点 可以是不同的类型 总是相似的: 指向一个链表结点的指针 (公共特征,作为基类) 第二页,共二十九页。 1 链结点:slink struct slink{ slink * next; slink(){ next = 0 ;} slink(slink *p) {next = p;} } 第三页,共二十九页。 2 表结点: name #include string.h class name:public slink{ char * s; public: name (const char *ss) { s=new char[strlen(ss)+1]; strcpy(s,ss); } // … } 第四页,共二十九页。 3 单链表类:slist_base class slist_base{ // ... public: int insert(slink *); // upcasting,可以处理不同类型的结点 int append(slink *); // upcasting slink *get(); }; 第五页,共二十九页。 4 使用单链表 void f(const char *s) { slist_base slb; slb.insert(new name(s)); // … name *p=(name *)slb.get(); // … delete p; } 第六页,共二十九页。 12.7.2 扩充:链表结点expr class expr: public slink{ // … }; void main() { slist_base slb; slb.insert(new expr); slb.insert(new name(“s1”)); slb.insert(new expr); // … expr *e1=(expr *)(slb.get()); expr *e2=(expr *)(slb.get()); // 使用e2可能出错 } 第七页,共二十九页。 12.7.3 有什么问题? 由于slist_base是按slink而不是name 来定义对链表的操作,当对象放入链表之后,其静态类型信息也就消失了。当从链表中取出它时,需要进行强制类型转换,把链表中存放的对象转换成它原来的类型name.但是:要记住每次取出对象的具体类型是很困难的。 难题:如何保证链表中的类型安全性? 若用虚函数,不必进行强制类型转换,没有什么问题。但用户只能通过虚函数的动态绑定来使用基类提供的接口; 若要对具体的派生类进行处理,则注定了这种异质链表(链表中可以存放不同类型的对象)不是类型安全的。 第八页,共二十九页。 12.7.4 同质链表的类型安全性 同质链表:链表中只能存放相同类型的对象。 同样地,如何保证其类型安全性,即如何避免链表中插入对象与取出对象类型不一致的问题。 利用模板参数在编译时的类型检查! 第九页,共二十九页。 1. 类模板Islist template class T class Islist: private slist_base { public: void insert(T *a) { slist_base::insert(a); } T *get() { return(T *)slist_base::get(); } // … } 第十页,共二十九页。 2. 使用类模板 void f(const char *s) { Islistname ilst; ilst.insert(new name(s)); // … name *p = ilst.get(); // … delete p; } 第十一页
您可能关注的文档
- 建筑安装工程定额原理分析与预算.ppt
- 矿山压力及其控制第一章绪论.ppt
- 教育技术与创新人才培养的探索.ppt
- 口腔正畸工艺技术.ppt
- 蓝湾半岛全程营销策划案.ppt
- 酒店前台电话服务及预订服务.ppt
- 绩效考核与人事分配.ppt
- 建筑室内设计概论.ppt
- 康乐行业的现状与发展讲义.ppt
- 客户异议与顾客管理.ppt
- 2026年长春事业单位联考备考题库发布时间有完整答案详解.docx
- 2026广西北海市合浦县民政局招录城镇公益性岗位人员11人备考题库及答案详解(最新).docx
- 2026江苏南京邮电大学招聘(人事代理)4人备考题库(第二批)精编答案详解.docx
- 2026年湖口县公安局交通管理大队公开招聘交通协管员备考题库完整答案详解.docx
- 2026年长春事业单位联考备考题库发布时间及一套答案详解.docx
- 2026年福建莆田市公安局城厢警务辅助人员招聘13人备考题库及参考答案详解1套.docx
- 2026广东佛山狮山镇大圃诚聘地理美术化学英语教师备考题库及答案详解(考点梳理).docx
- 2026广东中山市公安局南头分局招聘辅警3人备考题库完整答案详解.docx
- 2026年芜湖市文化和旅游局所属事业单位公开招聘编外聘用人员备考题库及答案详解参考.docx
- 2026广西北海市合浦县纪委监委招录公益性岗位人员1人备考题库及答案详解1套.docx
原创力文档

文档评论(0)