c++ template 学习之一:模板参数
来源:互联网 发布:中材建设网络招标平台 编辑:程序博客网 时间:2024/06/06 03:12
分析下面语句的缺点:
template<typename T1,typename T2>
inline T1 max(T1 const& a,T2 const & b)
{
return a<b?b:a;
}
......
max(4,4.2);
以上语句是给max传递两个不同类型的好方法。
缺点一:对于返回类型,如果使用的是其中的一个参数类型,那么另一个实参可能要转型为返回类型,而不会在意代码的用途,返回值取决于调用实参的顺序。
缺点二:把第二个参数转型为返回类型的过程将会创建一个新的局部临时对象,这导致了不能通过引用来返回结果。
修改方式一:显示指定所有参数实例
template<typename T1,typename T2,typename RT>
inline RT max(T1 const& a,T2 const & b)
{
return a<b?b:a;
}
.............
max<int ,double,double>(4,4.2); //程序正确,但调用会很麻烦
修改方式二:显示指定第一个实参,让演绎过程推导出其余的实参
template<typename RT, typename T1,typename T2>
inline RT max(T1 const& a,T2 const & b)
{
return a<b?b:a;
}
.............
max<double>(4,4.2);
0 0
- c++ template 学习之一:模板参数
- C++template ;模板学习
- C++Template学习笔记之函数模板
- template template parameter模板模板参数笔记----C++学习之路
- variadic template模板参数可变化----C++学习之路
- C++template模板
- Template template parameter(模板参数) example
- Template Template Parameters(双重模板参数)
- C++ template - 模板的模板参数
- C/C++函数模板template
- C++template 模板类2
- C++ template模板的学习
- C++,template,类模板和函数模板
- C++ Template学习笔记之函数模板(1)——函数模板定义
- C++ Template学习笔记之函数模板(3)——模板实参推演
- C++ Template学习笔记之函数模板(5)——模板编译模式
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C++ Template学习笔记之函数模板(1)——函数模板定义
- 工作总结
- Android Support Library
- 单体测试培训
- Android笔记: 在fragment中调用SharedPreferences
- jQuery命名空间,自定义空间及属性,插件开发全解析
- c++ template 学习之一:模板参数
- 关于时间的相关基础收集
- c#基本函数应用1
- tomcat配置成服务
- AlertDialog_弹出式对话框
- 第七周 习题
- groovy 环境搭建
- Spring Data JPA 全局DAO的扩展
- 确保对象的唯一性——单例模式 (三):饿汉式单例与懒汉式单例