c++函数模板和类模板
来源:互联网 发布:cpu网络营销策划书 编辑:程序博客网 时间:2024/06/13 07:23
函数模板:实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用的函数就称为函数模板。
#include <iostream>using namespace std;template<typename T>T Max(T a,T b){return a>b?a:b;}int main(){cout <<Max(1,2)<<endl;cout <<Max(1.0,2.0)<<endl;return 0;}
注意T在不同函数中可以表示不同类型,在同一函数中只能表示同一种类型
分析下面程序
#include <iostream>using namespace std;template<typename T>T Max(T a,T b){return a>b?a:b;}int main(){cout <<Max(1,2)<<endl;cout <<Max(1.3,2)<<endl;//注意这样是错的cout <<Max(1.1,2.3)<<endl;return 0;}
那要怎么办呢
#include <iostream>using namespace std;template<typename T,typename M>T Max(T a,M b){return a>b?a:b;}int main(){cout <<Max(1,2)<<endl;cout <<Max(1.3,2)<<endl;cout <<Max(1.1,2.3)<<endl;return 0;}
这样也会有问题,输出的值会强制转换成第一个参数的类型
定义一个类模板
#include <iostream>using namespace std;template <class T>class Compare{private : T i, j;public: Compare(T a, T b) { i = a; j = b; } T max() { return (i > j) ? i : j; } T min();};template <class T>T Compare<T>::min(){ return (i < j) ? i : j;}int main(){ Compare <int> c1(5, 7); cout << c1.max() << endl; Compare <float> c2(9.8, 7.7); cout << c2.min()<<endl; system("pause"); return 0;}
类模板的参数有一个或多个,但每个类型前都要class
template <class T1,class T2>
阅读全文
0 0
- C++,template,类模板和函数模板
- c++---函数和类模板
- 【c/c++】函数模板和模板函数
- 模板函数和模板类
- 函数模板和类模板
- 类模板和函数模板
- 函数模板和类模板
- 类模板和函数模板
- 模板函数和类模板
- 函数模板 和类模板
- 函数模板和类模板
- 函数模板和类模板
- 函数模板和类模板
- 类模板和函数模板
- 函数模板和类模板
- 函数模板和类模板
- 函数模板和类模板
- 函数模板和类模板
- asp.net中的按钮点击事件
- JDK1.5以后有关classpath环境变量的讨论
- CS231n课程翻译系列
- oralce归档日志的手动删除
- Java编程思想 第5章 初始化与清理
- c++函数模板和类模板
- Java基础语法(二)—基本数据类型转换
- MD算法
- Java编程思想 第6章 访问权限控制
- kotlin 链接视频和api中文
- OpenMP 并行区域之间的工作共享方法
- Java编程思想 第7章 复用类
- Python列表推导式
- 软件工程没有银弹