- 3
- 0
- 约5.92千字
- 约 21页
- 2017-02-12 发布于重庆
- 举报
09ch12第12讲模板
第12讲 模板 12.1 模板概念 12.2 函数模板 12.3 类模板 12.4 类模板作函数参数 12.1 模板概念 类属 —— 类型参数化,又称参数模板 使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递 C++提供两种模板机制: 函数模板 类模板 * 模板 (函数模板和类模板) 模板函数 模板类 对象 模板、类、对象和函数 12.1 模板概念 * 1. 函数模板的意义 考虑求两参数之中大值函数:max ( a , b ) 对 a , b 的不同类型,都有相同的处理形式: return ( a b ) ? a : b ; 12.2 函数模板 用已有方法解决对不同数据类型处理: (1)宏替换 # define max ( a , b ) ( a b ? a : b ) 问题 避开类型检查 (2)重载 问题 需要许多重载版本 (3)使用函数模板 * 2. 函数模板的声明 template 类型形式参数表 函数声明 12.2 函数模板 其中,类型形式参数的形式为: class T1 , T2 , …… , Tn 或 typename T1 , T2 , …… , Tn 由于关键字 class 已被用于抽象数据类型,为使语义清楚严格, 新的 C + + 标准建议使用关键字 typename * 2. 函数模板的声明 template 类型形式参数表 函数声明 12.2 函数模板 调用函数模板时用实参(模板实参)对参数类型实例化,称为模板函数。它是由编译系统产生的可执行代码。 * // ex12_1 #include iostream.h template class T T max ( T a , T b ) { return a b ? a : b ; } void main ( ) { cout max ( 3 , 5 ) is max ( 3 , 5 ) endl ; cout max ( y , e ) is max ( y , e ) endl ; cout max ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) endl ; } 通常 应该把模板说明放在 头文件 * 函数模板实例化 3. 重载模板函数 有些特殊情况需要函数模板参与重载 12.2 函数模板 例如: template class T T max ( T a , T b ) { return a b ? a : b ; } void f ( int i , char c ) { max ( i , i ) ; // ok max ( c , c ) ; // ok max ( i , c ) ; // error,无法匹配 max ( c , i ) ; // error } * 模板类型不能提供 char 和 int 类型的隐式转换 template class T T max ( T a , T b ) { return a b ? a : b ; } int max ( int a , int b ) // 模板函数重载版本 { return a b ? a : b ; } void f ( int i , char c ) { max ( i , i ) ; // ok max ( c , c ) ; // ok max ( i , c ) ; // ok ,由系统提供隐式转换 max ( c , i ) ; // ok } * // ex12_2 # include iostream.h # include string.h template class T T max ( T a , T b ) { return a b ? a : b ; } int max ( int a , int b ) { return a b ? a : b ; } char * max ( char * a , char * b ) { return strcmp ( a , b ) ? a : b ; } void main ( ) { cout max ( 3 , a ) is max ( 3 , a ) endl ; cout max ( \ye
您可能关注的文档
- 0912自考真题金融理论与实务.doc
- 091室外贴面砖施工分项工程质量管理.doc
- 091模拟卷1试题答案.doc
- 0921方案设计辅导实施阶段工作计划.ppt
- 0928;权乐乐;剖宫产同时行子宫肌瘤剔除术的效果分析;2500.doc
- 092大理石花岗石干挂施工分项工程质量管理.doc
- 093 提高建筑气密性适应性研究.doc
- 093132自动校准技术.ppt
- 093199李早阳凝固过程工艺对多晶硅铸锭炉内热场的影响.doc
- 093537刘晓燕 两相颗粒多孔材料导热系数研究.doc
- 全过程工程管理造价咨询工程监理项目服务方案投标方案(技术部分).doc
- 招标代理服务投标技术服务方案(技术方案).doc
- AI大模型与AIGC技术在公安领域的应用解决方案(99页 PPT).pptx
- 工业4.0智能制造数字工厂规划方案.pptx
- 树立社会主义核心价值观.docx
- 三年(2023-2025)中考历史真题分类汇编(全国)专题21 科技文化与社会生活(解析版).docx
- 2025年中考道德与法治真题完全解读(吉林卷).pdf
- 2025年中考道德与法治真题完全解读(安徽卷).pdf
- 三年(2023-2025)中考历史真题分类汇编(全国)专题14 人民解放战争(解析版).pdf
- 三年(2023-2025)广东中考历史真题分类汇编:专题03 中国近代史(八年级上册)(解析版).docx
原创力文档

文档评论(0)