- 12
- 0
- 约5.2千字
- 约 22页
- 2016-10-22 发布于河南
- 举报
10. 模板和泛型编程
面向对象程序设计与C++ 第十章 模板与泛型编程 教 师: 王 涛 电 话: 办公室: 九教北525 E-mail: twang@bjtu.edu.cn 1. 普通函数的缺陷 求两个数最大值的函数, 可以重载多个函数: int max(int a, int b){ return (a b) ? a : b; } char max(char a char b) { return (a b) ? a : b; } float max(float a, float b) { return (a b) ? a : b; } double max(double a, double b) { return (a b) ? a : b; } 以上函数的实现方式完全一样,是否可以用一个通用函数完成? 普通类的缺陷 分别有整数链表及浮点数链表: struct inode{ struct fnode{ int val; float val; inode *next;}; fnode* next; }; class ilist{ class flist{ inode* head; fnode* head; public: public: ilist(); flist(); ~ilist(); ~flist(); void clear(); void clear(); void insert(int); void insert(float); void append(int); void append(float); bool remove(int); bool remove(float); bool contains(int); bool contains(float); int length(); int length(); }; }; 对于一些结构及操作相同,只是成员数据类型不同的抽象数据结构,若是用普通类class进行封装,需要将不同的数据类型封装成不同的类,造成代码重复及使用不便. 解决的方法之一:利用class封装较为通用的数据类型,使用的时候再进行数据类型转换. 解决的方法之二:使用模板 普通类的缺陷 2.模板 对于结构和操作相同,但成员数据类型不同的抽象类型,可以通过模板实现。 模板有两种形式: 模板函数(函数模板) 模板类(类模板) 模板声明格式为: template 模板参数表 函数模板 对于功能和操作基本相同,只是参数或返回值类型不同的若干函数,可以通过函数模板实现. int max(int x, int y){ // 求两个整数的最大值 return (x y)? x : y; } float max(float x, float y){ // 求两个浮点数的最大值 return (x y)? x : y; } char max(char x, char y){ // 求两个字符的最大值 return (x y)? x : y; } template class T T max( T x, T y){ return (x y)? x : y; } void main(){ int x1 = 10, y1 = 8; float x2 = 20.3, y2 = 33.5; char x3 = ‘k’, y3 = ‘n’; cout “max(x1,y1) = “ max(x1, y1) endl; cout “max(x2,y2) = “ max(x2, y2) endl; cout “max(x3,y3) = “ max(x3, y3) endl; } 模板函数 输出: max(x1,y1) = 10 max(x2,y2) = 33.5 max(x3,y3) = n 采用模板参数的各参数之间必须保持完全一致的类型. template class T T max(T x, T y){ return (x y)? x : y; } void main(){ int i; char c; float f; max(i, i) ; // ok. max(c, c); // ok. max(f, f); // ok. max(i, c); // error: template parameter T is ambiguous max(i, f);
您可能关注的文档
最近下载
- 2020高考物理:计算题专项训练.pdf VIP
- 2025年湖南铁路科技职业技术学院单招职业技能测试题库一套.docx VIP
- 尾矿库安全技术知识--培训课件.ppt VIP
- 尾矿库安全培训精选课件.ppt VIP
- 四级高频词汇带音标版.pdf VIP
- 化妆品检验与安全性评价 第一第二章.pptx VIP
- 农村自建房包工不包料合同模板.docx VIP
- 【2025届】青海初中学业水平考试中考语文真题试题【原卷+解析】.pdf
- 尾矿库基础知识培训.pptx VIP
- Unit 5 School activities Wrap up & Let's explore 课件(共36张PPT) 外研版英语四年级下册.pptx
原创力文档

文档评论(0)