eg1:
#include <iostream>
using namespace std;
template<class T1,class T2>
class A
{
public:
void function(T1 value1,T2 value2)
{
cout<<"value1="<<value1<<endl;
cout<<"value2="<<value2<<endl;
}
};
//类A通常称为主版本模板类,它的主要特点是:模板类中所有的类型都是模板类型
int main()
{
A<int,char>a;
a.function(12,'b');
return 0;
}
运行结果:
value1=12
value2=b
eg2:
#include <iostream>
using namespace std;
template<class T1,class T2>
class A
{
public:
void function(T1 value1,T2 value2)
{
cout<<"value1="<<value1<<endl;
cout<<"value2="<<value2<<endl;
}
};
template<>
class A<int,double>//类型明确化,是个全特化类,被称为全特化的类,必须有一个主模板类
{
public:
void function(int value1,double value2)
{
cout<<"int value1="<<value1<<endl;
cout<<"double value2="<<value2<<endl;
}
};
int main()
{
A<int,double>a;
a.function(12,12.21);
return 0;
}
运行结果
int value1=12
double value2=12.21
eg3:
#include <iostream>
using namespace std;
template<class T1,class T2>
class A
{
public:
void function(T1 value1,T2 value2)
{
cout<<"value1="<<value1<<endl;
cout<<"value2="<<value2<<endl;
}
};
template<class T>
class A<int,T>//类型部分明确化,是个偏特化
{
public:
void function(int value1,T value2)
{
cout<<"int value1="<<value1<<endl;
cout<<"char value2="<<value2<<endl;
}
};
int main()
{
A<int,char>a;
a.function(12,'a');
return 0;
}
运行结果:
int value1=12
char value2=a
参考文章:
https://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/18/2728753.html