函数模板 类模板
2016-07-23 21:35
302 查看
1、函数模板
模板就是为了代码的复用,可以把数据类型设计为参数,由我们自定义类型进行传送;
函数模板效率并不高,只是将函数模板-------->模板函数;
上述出错的解决方案:cout<<Max(2, (int)5.45)<<endl; 或cout<<Max((double)2, 5.45);
或cout<<Max<int>(2, 5.45)<<endl; 指定int类型的比较;
2、类模板
C++中的类一般都是模板类;
模板类要注意的是:
(1)、在类上面写上模板,友元函数类的声明,最上面也要写上模板;
(2)、在类内声明,在类外实现时要加上模板,并且还得在作用域限定符前面加上数据类型<Type>;
模板的0初始化:
以上这些可以说明语法是成立的; Type t = Type(); 这个就是模板的初始化,根据不同类型初始化为0;
模板就是为了代码的复用,可以把数据类型设计为参数,由我们自定义类型进行传送;
#include<iostream> using namespace std; template<typename Type> //模板的声明,老的版本是class替换typename; Type Max(Type a, Type b){ return a > b ? a : b; } int main(void){ cout<<Max('a', 'b')<<endl; //求最大值 cout<<Max(2, 5.45)<<endl; //这会出错,因为类型不一样,没法转换。不会将double-->int, //不会隐式转换的。 return 0; }模板不支持隐式转换,类型必须明确给出(强制类型转换);
函数模板效率并不高,只是将函数模板-------->模板函数;
上述出错的解决方案:cout<<Max(2, (int)5.45)<<endl; 或cout<<Max((double)2, 5.45);
或cout<<Max<int>(2, 5.45)<<endl; 指定int类型的比较;
template<typename Type1, typename Type2> Type1 Max(Type1 a, Type2 b){ return a > b ? a : b; }这样就可以对应传过去的数据类型;每个参数的类型一一对应,在自己根据情况写出返回值类型。
2、类模板
C++中的类一般都是模板类;
模板类要注意的是:
(1)、在类上面写上模板,友元函数类的声明,最上面也要写上模板;
(2)、在类内声明,在类外实现时要加上模板,并且还得在作用域限定符前面加上数据类型<Type>;
模板的0初始化:
以上这些可以说明语法是成立的; Type t = Type(); 这个就是模板的初始化,根据不同类型初始化为0;
相关文章推荐
- 如何在 LibreOffice 中创建模板以实现省时高效
- 设计模式之行为型模式 - 调用行为的传递问题
- [div+css]晒晒最新制作专题推广页模板
- 2008大学生入党申请书 模板
- IMAIL多语言模板两套Outlook&Gmail模板下载
- 在PHP中使用模板的方法
- 深入解析php模板技术原理【一】
- Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
- 在ASP中不用模板生成HTML静态页直接生成.html页面
- 基于HTML模板和JSON数据的JavaScript交互(移动端)
- C#模板方法模式(Template Method Pattern)实例教程
- javascript文本模板用法实例
- 关于Asp代码与页面的分离模板技术第1/3页
- php模板原理讲解
- 需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
- DataGrid 动态添加模板列 实现代码
- 详解java模板和回调机制
- C++模板之特化与偏特化详解
- 使用Lua编写Web端模板引擎的实例代码分享
- vs.net2008添加模板方法