- 3
- 0
- 约1.02万字
- 约 40页
- 2016-12-28 发布于北京
- 举报
函数模板名字空间 如果在全局域中声明了与模板参数同名的对象函数或类型则该全局名将被隐藏在下面的例子中tmp 的类型不是double 是模板参数Type typedef double Type; template class Type Type min( Type a, Type b ) { // tmp 类型为模板参数 Type // 不是全局 typedef Type tmp = a b ? a : b; return tmp; } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 函数模板名字冲突 模板参数名在同一模板参数表中只能被使用一次,但是模板参数名可以在多个函数模板声明或定义之间被重复使用 // 错误: 模板参数名 Type 的非法重复使用 template class Type, class Type Type min( Type, Type ); ? // ok: 名字 Type 在不同模板之间重复使用 template class Type Type min( Type, Type ); template class Type Type max( Type, Type ); Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 函数模板名字冲突 在函数模板定义中声明的对象或类型不能与模板参数同名 template class Type Type min( Type a, Type b ) { // 错误: 重新声明模板参数 Type typedef double Type; Type tmp = a b ? a : b; return tmp; } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 函数模板参数作为返回值 模板类型参数名可以被用做函数模板的返回值 // ok: T1 表示 min() 的返回类型 // T2 和 T3 表示参数类型 template class T1, class T2, class T3 T1 min( T2, T3 ); Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 函数模板中的二义性 为了分析模板定义,编译器必须能够区分出是类型以及不是类型的表达式。对于编译器来说它并不总是能够区分出模板定义中的哪些表达式是类型。 template class Parm, class U Parm minus( Parm* array, U value ) { Parm::name * p; // Parm::name, name 是类型名还是Parm的成员? 这是一个 指针声明还是乘法乘法? } 编译器不知道name 是否为一个类型因为它只有在模板被实例化之后才能找到Parm 表示的类的定义。 为了让编译器能够分析模板定义,用户必须指示编译器哪些表达式是类型表达式。 告诉编译器一个表达式是类型表达式的机制是在表达式前加上关键字typename。 template class Parm, class U Parm minus( Parm* array, U value ) { typename Parm::name * p; // ok: 指针声明 } 关键字typename 也可以被用在模板参数表中以指示一个模板参数是一个类型。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 函数模板的类型匹配 函数模板中的模板形参可实例化为各种类型,但当实例化模板形参的各模板实参之间不完全一致时,就可能发生错误 templatetypename T??????? void min(T x, T y) {??return (xy)?x:y;??} void func
您可能关注的文档
- 《AutoCAD2007基础知识.ppt
- 《ATSE常用材料.ppt
- 《AUTOCAD2007教程三维绘制基础与简单图形的绘制.ppt
- 《AUTOCAD2007教程第3章选择与夹点编辑二维图形对象.ppt
- 《AUTOCAD2007教程尺寸标注与编辑标注对象完整教程.ppt
- 《AutoCAD2008绘图基础.ppt
- 《AutoCAD_2007_标准教程.ppt
- 《AutoCAD入门.ppt
- 《AvrilLavigne英文简介.ppt
- 《AutoCAD全套建筑图纸设计教程0财富值下载.ppt
- 2023年度十大热点人物的素材解读与运用-2024年高考语文作文热点素材积累运用与(全国通用).pdf
- 格力室外机中央空调价格表.pdf
- 2026上半年贵州事业单位联考贵州省交通运输厅招聘84人备考题库完整答案详解.docx
- 2026上半年贵州事业单位联考贵州传媒职业学院招聘12人备考题库附参考答案详解(达标题).docx
- 2026上半年贵州事业单位联考贵州省住房和城乡建设厅招聘16人备考题库含答案详解(培优).docx
- 2026上半年贵州事业单位联考玉屏侗族自治县招聘41人备考题库及答案详解(夺冠系列).docx
- 通信原理实验2数字频带传输系统实验.pdf
- 2026上半年贵州事业单位联考贵州医科大学第二附属医院招聘22人备考题库含答案详解(能力提升).docx
- 2026上海复旦大学计算力学与人工智能交叉研究院(筹)招聘专任研究员2人备考题库完整答案详解.docx
- 2026上半年贵州事业单位联考贵州民族大学招聘52人备考题库附参考答案详解(研优卷).docx
原创力文档

文档评论(0)