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>
原创粉丝点击