这个也是我直接抄过来的 不是很懂 碰到了就查了一下

模板是c++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。因此可以说,模板是一种对类型进行参数化的工具。

template<class t=""> 和 template<typename t=""> 都可以用来定义函数模板和类模板,在使用上,他们俩没有本质的区别。</typename></class>

函数模板针对仅参数类型不同的函数;类模板针对仅数据成员和成员函数类型不同的类。

Note:模板的声明或定义只能在全局,命名空间或类范围内进行。不能再局部范围,函数内进行。

一、函数模板

template< class 形参名,class 形参名,......> 返回类型 函数名(参数列表) { 函数体 }

举个例子:template <class t=""> void swap(T& a,T& b){}</class>

当调用这样的模板函数时,类型T就会被调用时的类型所代替。如果swap(a, b),a,b都是int类型,那么模板函数swap中的形参T就会被int所代替,模板函数就会变成swap(int &a,int &b)。而当swap(a,b),a,b都是double类型,那么模板函数swap中的形参T就会被double所代替,模板函数就会变成swap(double &a,double &b),这样如果我们的程序中交换变量的值就不再受限于类型了。

二、类模板

template< class 形参名,class 形参名,......> class 类名 {...};

举个例子:template <class t=""> class A { public: T a; T b; T hy(T c, T &d); };</class>

在类A中声明了两个类型为T的成员变量a和b,还声明了一个返回类型为T带两个参数类型为T的函数hy。
————————————————
版权声明:本文为CSDN博主「keneyr」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/keneyr/article/details/89195070
TemplateDemo.h

#ifndef TEMPLATE_DEMO_HXX

#define TEMPLATE_DEMO_HXX 



template<class T> class A{

     public:

         T g(T a,T b);

         A();

 };



#endif

TemplateDemo.cpp

#include<iostream.h>
#include "TemplateDemo.h" 
template<class T> A<T>::A(){} template<class T> T A<T>::g(T a,T b){ 
    return a+b;} 
void main(){
     A<int> a;
     cout<<a.g(2,3.2)<<endl;