c++主模板类,全特化,偏特化

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

猜你喜欢

转载自blog.csdn.net/qq_41903811/article/details/88394243