清华大学:《C++语言程序设计》课程教学资源(PPT课件)第九章 群体类和群体数据的组织

C++语言程序设计 第九章群体类 和群体教据的组织
第九章 群体类 和群体数据的组织 C++语言程序设计

C++语言程序设计 本章主要内容 模板 °群体类 ●群体数据的组织 x
C++语言程序设计 2 本章主要内容 ⚫ 模板 ⚫ 群体类 ⚫ 群体数据的组织

C++语言程序设计 第一部分—模板 模板是C++语言的一个重要特性。使 用模板,程序员可以快速建立具有类 型安全的类库集合和函数集合 ●函数模板 ●类模板 更好地理解并使用标准模板库。模板 的定义一般放到头文件中
C++语言程序设计 3 第一部分—模板 模板是C++语言的一个重要特性。使 用模板,程序员可以快速建立具有类 型安全的类库集合和函数集合。 ⚫ 函数模板 ⚫ 类模板 更好地理解并使用标准模板库。模板 的定义一般放到头文件中

C++语言程序设计 为什么要用函数模板? int max int a, int b) i return a>b?a: b; 1 float max float a, float b) i return a>b?a: b; double max( double a, double b) i return a>b?a: b; 1 x 对于每种类型,都需要一次函数重载形式。大
C++语言程序设计 4 为什么要用函数模板? int max(int a,int 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;} 对于每种类型,都需要一次函数重载形式

C++语言程序设计 函数模板 ●函数模板可以用来创建一个通用功能 数的函数,以支持多种不同类型形参, 模进一步简化重载函数的函数体设计。 声明方法 板 template< typename标识符 函数声明 x
C++语言程序设计 5 函数模板 ⚫ 函数模板可以用来创建一个通用功能 的函数,以支持多种不同类型形参, 进一步简化重载函数的函数体设计。 ⚫ 声明方法: template 函数声明 函 数 模 板

C++语言程序设计 求绝对值函教的模板 Include using name space std; template 数模板 f abs(f x) return x<0?-*: x int maino int n=-5 运行结果: 5 double d=-55 5.5 cout<<abs(n)<<endl cout<<abs(d)<<endl i
C++语言程序设计 6 求绝对值函数的模板 #include using namespace std; template T abs(T x) { return x<0?-x:x; } int main() { int n=-5; double d=-5.5; cout<<abs(n)<<endl; cout<<abs(d)<<endl; } 函 数 模 板 运行结果: 5 5.5

C++语言程序设计 求绝对值函数的模板分析 编译器从调用abs()时实参的类型,推 数导出函数模板的类型参数。例如,对 于调用表达式abs(n),由于实参n为 模im团,所以推导出模板中类型参数T 为into 板·当类型参数的含义确定后,编译器将 以函数模板为样板,生成一个函数: int abs(int x) i return X<0?X.X;] 大x
C++语言程序设计 7 求绝对值函数的模板分析 ⚫ 编译器从调用abs()时实参的类型,推 导出函数模板的类型参数。例如,对 于调用表达式abs(n),由于实参n为 int型,所以推导出模板中类型参数T 为int。 ⚫ 当类型参数的含义确定后,编译器将 以函数模板为样板,生成一个函数: int abs(int x) { return x<0?-x:x; } 函 数 模 板

C++语言程序设计 重敢函数模板 template T max(T a,T b return a>b?a: b: char* max(char* a, char* b) [return(strcmp(a, b>0?a: b);3 x 参考实例演示
C++语言程序设计 8 重载函数模板 template T max(T a,T b) { return a>b?a:b; } char* max(char* a, char* b) {return (strcmp(a,b)>0?a:b);} 参考实例演示

C数模板与同名函数量载时的 调用规则 ●先寻找一个参数完全匹配的函数,如果找到了就 调用它; ●如果上面没有找到,则寻找一个函数模板,使其 实例化,产生一个匹配的函数,如果找到了,就 调用它; 如果上面两个调用失败,再试一试低一级的对函 数的重载方法,例如通过类型转换可产生参数匹 配等,如果找到了,就调用它; ●如果上述都失败,则表明这是一个错误的调用
C++语言程序设计 9 函数模板与同名函数重载时的 调用规则 ⚫ 先寻找一个参数完全匹配的函数,如果找到了就 调用它; ⚫ 如果上面没有找到,则寻找一个函数模板,使其 实例化,产生一个匹配的函数,如果找到了,就 调用它; ⚫ 如果上面两个调用失败,再试一试低一级的对函 数的重载方法,例如通过类型转换可产生参数匹 配等,如果找到了,就调用它; ⚫ 如果上述都失败,则表明这是一个错误的调用

C++语言程序设计 重敢亟教模板方式 显式重载函数模板 ●显式特化 x
C++语言程序设计 10 重载函数模板方式 ⚫ 显式重载函数模板 ⚫ 显式特化
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第八章 多态性.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 继承与派生.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第六章 数组、指针与字符串.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第九章 文件.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第八章 排序.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第七章 查找.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第六章 图.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第五章 树和二叉树.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第四章 串和数组.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第三章 栈和队列.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第二章 线性表.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第一章 数据结构基础概论.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第9章 数组.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第8章 函数.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第7章 循环结构程序设计.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第6章 选择结构程序设计.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第5章 顺序结构程序设计.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第4章 数据类型及表达式.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第3章 C语言概述.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)课程简介(李莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第九章 查找.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第六章 树和二叉树.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第三章 栈和队列.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第十章 排序.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第四章 字符串(String).ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第一章 绪论(李晓红).ppt
- 人民邮电出版社:网页及HTML语言.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第一章 电子商务概述(宋文官).ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第七章 典型解决方案.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第三章 EDI电子商务.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第二章 电子商务系统的安全.ppt