浅谈模板
2019-10-10 22:32
337 查看
什么是模板?
就是告诉编译器一个模子,让编译器根据不同的类型生成不同的代码。
编写与类型无关的函数,是代码复用的一种手段。
函数模板
template<typename T> void Swap( T& left, T& right) { T temp = left; left = right; right = temp; }
用这种方式定义函数模板就完成了代码的复用,模板函数工作的原理就是在编译阶段编译器对传入的实参进行推演出合适的函数
模板函数的实例化
分为显示实例化和隐式实例化
隐式实例化:让编译器根据实参推演模板参数的实际类型,当所传的参数类型编译器无法进行推演时(模板类型只有一个而实参类型有多个),有两种处理方式:1.类型转化 2.显示实例化
显式实例化:在函数名后的<>中指定模板参数的实际类型
注意:一个非模板函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数
,当模板函数和同名自定义函数同时存在时优先调用自定义函数,可以通过显式调用来调用模板函数,
模板函数不允许自动类型转换,普通函数可以
同样的类模板与其相同原理
相关文章推荐
- 浅谈轻量级js模板引擎simplite
- 浅谈smarty模板的mvc框架
- [Extjs6]浅谈对admin-dashboard模板左侧菜单树的修改
- 浅谈Tarjan缩点(分析+模板)
- 浅谈轻量级js模板引擎simplite
- HDU 4333 浅谈扩展KMP 线性求NXT数组模板
- 浅谈static、类模板和函数模板
- HDU 1512 浅谈可并堆即左偏树模板及并查集灵活应用
- 浅谈C++模板,template method,strategy异同
- 浅谈SuperMemo中国风模板的制作
- 浅谈前后模板引擎的利与弊
- 浅谈模板方法模式
- 【tool】浅谈功能测试用例模板
- <b>浅谈 ASP 模板技术之参数传递</b>
- 浅谈Django自定义模板标签template_tags的用处
- 浅谈C++模板
- C++模板浅谈
- 关于c++中模板的浅谈
- 浅谈服务端模板到客户端模板
- 浅谈 Web 中前后端模板引擎的使用