为什么会有函数模版
来源:互联网 发布:淘宝客可以注销吗 编辑:程序博客网 时间:2024/04/29 05:01
demo 1
// 函数的业务逻辑 一样 // 函数的参数类型 不一样void myswap01(int &a, int &b){int c = 0;c = a;a = b;b = c;}void myswap02(char &a, char &b){char c = 0;c = a;a = b;b = c;}void main(){{int x = 10; int y = 20;myswap01(x, y);printf("x:%d y:%d \n", x, y);}{char a = 'a'; char b = 'b';myswap02(a, b);printf("a:%c b:%c \n", a, b);}cout<<"hello..."<<endl;system("pause");return ;}
看到demo 1中的两个函数,他们的逻辑都是一样的,只是参数类型不一样,当然,你可以写函数重载,但还是需要写两个函数,况且函数重载不应该在这种情况下使用。
有了需求,就有了生成,出现了函数模版:
demo 2
//让 类型参数化 ===, 方便程序员进行编码// 泛型编程 //template 告诉C++编译器 我要开始泛型编程了 .看到T, 不要随便报错template <typename T>void myswap(T &a, T &b){T c = 0;c = a;a = b;b = c;cout << "hello ....我是模板函数,欢迎 call 我" << endl;}//函数模板的调用// 显示类型 调用// 自动类型 推导void main(){{int x = 10; int y = 20;myswap<int>(x, y); //1 函数模板 显示类型 调用myswap(x, y); //2 自动类型 推导printf("x:%d y:%d \n", x, y);}{char a = 'a'; char b = 'b';//myswap<char>(a, b); //1 函数模板 显示类型 调用myswap(a, b);printf("a:%c b:%c \n", a, b);}}
此时一个函数定义就完成了,注意调用的时候显示调用使用比较多。
补充一个demo 3
#include <iostream>using namespace std;// 函数模板 本质 : 类型参数化 //方便.....//需要对字符数组 int数组进行排序template <typename T,typename T2 >int mySort(T *array, T2 size){T2 i, j ;T tmp;if (array == NULL){return -1;}//选择 for (i=0; i<size; i++){for (j=i+1; j<size; j++){if (array[i] < array[j]){tmp = array[i];array[i] = array[j];array[j] = tmp;}}}return 0;}template <typename T, typename T2>int myPrint(T *array, T2 size){T2 i = 0;for (i=0; i<size; i++){cout << array[i] << " ";}return 0;}void main(){// int类型 { int myarray[] = {11, 33,44, 33,22, 2, 3, 6, 9}; int size = sizeof(myarray)/sizeof(*myarray); mySort<int, int> (myarray, size); printf("排序之后\n"); myPrint(myarray, size); }//char 类型{char buf[] = "aff32ff2232fffffdssss";int len = strlen(buf);mySort<char, int>(buf, len);myPrint<char , int>(buf, len);}cout<<"hello..."<<endl;system("pause");return ;}
1 0
- 为什么会有函数模版
- 为什么会有字符串函数?
- 为什么会有serialVersionUID
- 为什么会有“剩男剩女”
- 为什么会有句柄
- 为什么会有hibernate
- 为什么会有servlet?
- 为什么会有异常
- 为什么会有JavaScript???
- python: 为什么元类里面会有函数调用类
- 为什么不要特化函数模版
- 为什么不要特化函数模版?
- 为什么会有java,为什么会有.net
- 为什么会有Java,为什么会有.NET
- 06 为什么会有继承?为什么会有super?
- 为什么会有这个blog
- 为什么会有类型转换?
- 为什么物体会有颜色
- 关于VC++6.0使用过程中的一些经历
- mysql分表与分区表
- JSP基础实例_Java动态实现课程表_学习笔记
- zend studio 导入已有项目
- apache 安装
- 为什么会有函数模版
- 九度oj 题目1087:约数的个数
- JAVA多线程的一些理解
- 【Web探索之旅】第二部分第二课:服务器语言
- C语言C++程序的运行程序cannot open Debug/1.exe for writing错误
- [内存管理篇] IOS中ARC代码里 self.XXX 与_XXX 赋值 区别!
- JAVA实验第四天
- [华为机试练习题]41.取给定正整数的指定bit位开始的指定长度的数据
- Unity编程笔录--Unity3D 导出的apk进行混淆和加固(防止反编译)