template<typename T, typename B> //声明主模板,两个不确定参数T和B
class Person;
template<typename T> //偏特化,有一个不确定的参数T
class Person<T, int> //偏特化,一个不确定参数T,一个确定参数int
{
public:
T a;
int b;
Person(T a, int b) :a(a), b(b) {}
};
template<> //这里是全特化,所以不用任何参数<>
class Person<int, int> //全特化,两个确定的模板参数int,int
{
public:
int a;
int b;
Person(int a, int b) :a(a), b(b) {}
};
int main()
{
Person<string, int> p1("abc", 1);
Person<double, int> p2(1.0f, 1);
Person<int, int> p3(1, 1);
return 0;
}
C++中模板的偏特化和全特化解释2
最新推荐文章于 2023-04-05 17:49:36 发布