c++模板类和模板函数

#include <iostream>
using namespace  std;
template <class T>
//这个地方不能使用大括号
T max1(T a ,T b){
    //函数名的声明不能与类库里面的函数声明相同
    cout<<b<<endl;
    return b;
}
void main(){
    int x=1;
    int y=2;
    cout<<max1(x,y)<<endl;
}
/************************************************************************/
/* 函数模板中的每一个类型参数在函数参数表中必须至少使用一次。
template <class T1, class T2>
void func1(T1 para1)//错误,没有使用T2
{     // 函数体 }
                                                                     */
/************************************************************************/

//函数模板如果有多个模板类型参数,
//    则每个模板类型参数前面都必须用关键字class或typename修饰,并且这两个关键字可以混用。
//Ok,class和typename可以混用
template <class T, typename U> 
T func2(T a, U b); 
//error,每个模板参数前面都必须用class或typename修饰
template <class T, U>
T func3(T a, U b);

 下面是模板类中的函数的声明和实现

template <class T>
class A
{
public:
    T g(T a,T b);
    A();
protected:
private:
};
//.cpp文件
#include <iostream>
using namespace std;
#include "Templademo.h"
template <class T> 
A<T>::A(){};
template <class T>
A<T>::g(T a,T b){
    return a+b;
}
void main(){
    A<int >a;
    cout<<a.g(2,1)<<endl;
}
原文地址:https://www.cnblogs.com/zhangyanguang/p/4925750.html