template<typename T, typename M>
//基本的模板函数和模板类
void testfunc(T a, M b)
{
std::cout<<a<<b<<std::endl;
}
template<typename T, typename N>
class testclass
{
public:
testclass(T a, N b){}
~testclass()= default;
};
int main()
{
testfunc(3,4);
testclass<int,float> atest(3,1.5);
}
//全特化,意思就是模板失去效果,类型全指定
template<typename T, typename M>void testfunc(T a, M b)
{
std::cout<<a<<b<<std::endl;
}
template<>void testfunc(int a, float b)
{
std::cout<<a<<b<<std::endl;
}
template<typename T, typename N>class testclass
{
public:
testclass(T a, N b){}
~testclass()= default;
};
template<> class testclass<int ,float>
{
public:
testclass(int a, float b){std::cout<<a<<b<<"全特化构造"<<std::endl;};
~testclass() = default;;
};
int main()
{
testfunc(3,1.2);
testclass<int,float> a(1,3.5) ;
}
//偏特化,以上两种的杂交
template<typename T, typename M>void testfunc(T a, M b)
{
std::cout<<a<<b<<std::endl;
}
template<typename T>void testfunc(T a, float b)
{
std::cout<<a<<b<<std::endl;
}
template<typename T, typename N>class testclass
{
public:
testclass(T a, N b){}
~testclass()= default;
};
template<typename T> class testclass<T ,float>
{
public:
testclass(T a, float b){std::cout<<a<<b<<"全特化构造"<<std::endl;};
~testclass() = default;;
};
int main()
{
testfunc(3,1.2);
testclass<int,float> a(1,3.5) ;
}