C++函数模板类模板
2016-02-02 15:18
309 查看
转载请注明出处:/article/7555556.html
什么是函数模板?为什么用函数模板?
c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数, 其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模 板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义 一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函 数的功能。
c++提供两种模板机制:函数模板和类模板
类属 - 类型参数化,又称参数模板 使得程序(算法)可以从逻辑上抽象,把被处理的对象(数据)类型作为参数传递。
函数模板和普通函数的区别? 如上面代码
1.函数模板不允许自动类型转化
2. 普通函数能够自动进行类型转化
函数模板可以像普通函数那样可以被重载
c++编译器优先考虑普通函数
如果函数模板可以产生一个更好的匹配,那么选择模板
可以通过空模板实参列表的语法限定编译器只能通过模板匹配
总结:
模板把函数或类要处理的数据类型参数化,表现为参数的多态性,成为类属。
模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。
用模板是为了实现泛型,可以减轻编程的工作量,增强函数的重用性。
什么是函数模板?为什么用函数模板?
c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数, 其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模 板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义 一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函 数的功能。
c++提供两种模板机制:函数模板和类模板
类属 - 类型参数化,又称参数模板 使得程序(算法)可以从逻辑上抽象,把被处理的对象(数据)类型作为参数传递。
<p class="p1"></p><pre name="code" class="cpp">// // // Created by 刘龙玲 // Copyright © 2016年 liulongling. All rights reserved. // #define using _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; void test02(int a,int b) { int temp = a; a = b; b = temp; cout<<"a="<<a<<"b="<<b<<endl; } template<class T> void test01(T& a,T& b) { T temp = a; a = b; b = temp; cout<<"a="<<a<<"b="<<b<<endl; } int main(){ int a = 10; int b = 20; test01(a, b); float c = 1.6; float d = 2.90; test01(c, d); //函数模板不允许自动类型转化 //test01(a,c); //普通函数能够自动进行类型转化 test02(a,c); return 1; }
函数模板和普通函数的区别? 如上面代码
//函数模板不允许自动类型转化 //test01(a,c); //普通函数能够自动进行类型转化 test02(a,c);
1.函数模板不允许自动类型转化
2. 普通函数能够自动进行类型转化
函数模板和普通函数在一起调用规则:
函数模板可以像普通函数那样可以被重载
c++编译器优先考虑普通函数
如果函数模板可以产生一个更好的匹配,那么选择模板
可以通过空模板实参列表的语法限定编译器只能通过模板匹配
总结:
模板把函数或类要处理的数据类型参数化,表现为参数的多态性,成为类属。
模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。
用模板是为了实现泛型,可以减轻编程的工作量,增强函数的重用性。
相关文章推荐
- C语言小知识复习2
- 明解C语言1-9
- 明解C语言1-8
- 明解C语言1-7
- 明解C语言1-6
- 明解C语言1-5
- 明解C语言1-4
- 明解C语言1-3
- 明解C语言1-2
- 明解C语言1-1
- c++ builder TADOQuery控件的type mismatch for field‘note',expecting: String actual: Memo.
- C和C++库中的排序函数——sort与qsort解析
- c++ imooc自学计划
- Java .Net C++ RSA 加密
- 查找二叉树的C++代码实现
- Boost 学习之算法篇 gather
- [Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理
- some cpp conventions
- c++自学计划
- C++中四个与类型转换相关的关键字