[华工课件]C++程序设计基础(第三版)chap10-模板

上传人:飞*** 文档编号:2784178 上传时间:2017-07-27 格式:PPT 页数:87 大小:801.50KB
返回 下载 相关 举报
[华工课件]C++程序设计基础(第三版)chap10-模板_第1页
第1页 / 共87页
[华工课件]C++程序设计基础(第三版)chap10-模板_第2页
第2页 / 共87页
[华工课件]C++程序设计基础(第三版)chap10-模板_第3页
第3页 / 共87页
[华工课件]C++程序设计基础(第三版)chap10-模板_第4页
第4页 / 共87页
[华工课件]C++程序设计基础(第三版)chap10-模板_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《[华工课件]C++程序设计基础(第三版)chap10-模板》由会员分享,可在线阅读,更多相关《[华工课件]C++程序设计基础(第三版)chap10-模板(87页珍藏版)》请在金锄头文库上搜索。

1、chap10 模板,模板把函数或类要处理的数据类型参数化,表现为参数的多态 性,称为类属。 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据 对象的通用行为。,chap10 模板,10.1 什么是模板,10.2 函数模板,10.3 类模板,小结,10.1 什么是模板,类属 类型参数化,又称参数模板 使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递,C+提供两种模板机制:函数模板类模板,10.1 什么是模板,模板(函数模板和类模板),模板函数,模板类,对象,模板、类、对象和函数,10.2 函数模板,考虑求两参数之中大值函数:max ( a , b )对 a ,

2、b 的不同类型,都有相同的处理形式:return ( a b ) ? a : b ;,用已有方法解决对不同数据类型处理:(1)宏替换# define max ( a , b ) ( a b ? a : b )问题 避开类型检查(2)重载问题 需要许多重载版本(3)使用函数模板,10.2 函数模板,重载函数通常基于不同的数据类型实现类似的操作 对不同数据类型的操作完全相同,用函数模板实现更为简洁方便,10.2.1 模板说明,template ,声明模板中使用的类属参数。形式为,10.2.1 模板说明,10.2.1 模板说明,template ,声明模板中使用的类属参数。形式为,关键字,10.2.

3、1 模板说明,10.2.1 模板说明,template ,类型形式参数的形式为:typename T1 , typename T2 , , typename Tn 或class T1 , class T2 , , class Tn,声明模板中使用的类属参数。形式为,10.2.1 模板说明,类型形式参数的形式为:typename T1 , typename T2 , , typename Tn 或class T1 , class T2 , , class Tn,10.2.1 模板说明,template ,声明模板中使用的类属参数。形式为,关键字,10.2.1 模板说明,类型形式参数的形式为:ty

4、pename T1 , typename T2 , , typename Tn 或class T1 , class T2 , , class Tn,10.2.1 模板说明,template ,声明模板中使用的类属参数。形式为,类属参数,10.2.1 模板说明,template template template ,10.2.1 模板说明,template ,声明模板中使用的类属参数。形式为,例如,10.2.1 模板说明,10.2.2 函数模板与模板函数,template 类型 函数名 ( 形式参数表 ) 语句序列 ,函数模板声明,函数模板定义由模板说明和函数定义组成 模板说明的类属参数必须在函

5、数定义中至少出现一次 函数参数表中可以使用类属类型参数,也可以使用一般类型参数,10.2.2 函数模板与模板函数,#includeusing namespace std;template T Max( const T a, const T b ) return ab ? a : b ; int main() cout Max( 3, 5 ) is Max( 3, 5 ) endl ; cout Max( y, e) is Max( y, e ) endl ; cout Max( 10.3, 0.5 ) is Max( 10.3, 0.5 ) endl ;,例10-1 简单函数模板应用,10.2

6、.2 函数模板与模板函数,函数模板,10.2.2 函数模板与模板函数,例10-1 简单函数模板应用,#includeusing namespace std;template T Max( const T a, const T b ) return ab ? a : b ; int main() cout Max( 3, 5 ) is Max( 3, 5 ) endl ; cout Max( y, e) is Max( y, e ) endl ; cout Max( 10.3, 0.5 ) is Max( 10.3, 0.5 ) endl ;,#includeusing namespace st

7、d;template T Max( const T a, const T b ) return ab ? a : b ; int main() cout Max( 3, 5 ) is Max( 3, 5 ) endl ; cout Max( y, e) is Max( y, e ) endl ; cout Max( 10.3, 0.5 ) is Max( 10.3, 0.5 ) b ? a : b ; ,由实参类型实例化,10.2.2 函数模板与模板函数,例10-1 简单函数模板应用,#includeusing namespace std;template T Max( const T a,

8、const T b ) return ab ? a : b ; int main() cout Max( 3, 5 ) is Max( 3, 5 ) endl ; cout Max( y, e) is Max( y, e ) endl ; cout Max( 10.3, 0.5 ) is Max( 10.3, 0.5 ) b ? a : b ; ,由实参类型实例化,char max ( char a , char b ) return a b ? a : b ; ,10.2.2 函数模板与模板函数,例10-1 简单函数模板应用,#includeusing namespace std;templ

9、ate T Max( const T a, const T b ) return ab ? a : b ; int main() cout Max( 3, 5 ) is Max( 3, 5 ) endl ; cout Max( y, e) is Max( y, e ) endl ; cout Max( 10.3, 0.5 ) is Max( 10.3, 0.5 ) b ? a : b ; ,由实参类型实例化,char max ( char a , char b ) return a b ? a : b ; ,double max ( double a , double b ) return a

10、 b ? a : b ; ,10.2.2 函数模板与模板函数,例10-1 简单函数模板应用,#includeusing namespace std;template T Max( const T a, const T b ) return ab ? a : b ; int main() cout Max( 3, 5 ) is Max( 3, 5 ) endl ; cout Max( y, e) is Max( y, e ) endl ; cout Max( 10.3, 0.5 ) is Max( 10.3, 0.5 ) b ? a : b ; ,char max ( char a , char

11、 b ) return a b ? a : b ; ,double max ( double a , double b ) return a b ? a : b ; ,编译器生成的模板函数,程序执行时匹配不同的版本,10.2.2 函数模板与模板函数,例10-1 简单函数模板应用,template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) t

12、emp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0 ; if ( work ) break ; ,例10-2 冒泡排序法的函数模板,10.2.2 函数模板与模板函数,template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) temp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0 ; if ( work ) break ; ,模板声明,10.2.2 函数模板与模板函数,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号