C++:类模板以及实例化
类模板的定义格式
template<class T1, class T2, ..., class Tn>
class 类模板名
{
// 类内成员定义
};
类模板的实例化
类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可。
类模板名字不是真正的类,而实例化的结果才是真正的类。
// Vector类名,Vector<int>才是类型
Vector<int> s1;
Vector<double> s2;
类模板
// 类模板
template<class T1,class T2,class T3>
class Date
{
public:
Date(T1 y, T2 m, T3 d)
:_year(y)
, _month(m)
, _day(d)
{}
void Display();
private:
T1 _year;
T2 _month;
T3 _day;
};
// 如果在类外定义类模板的成员函数,需要加上泛型的声明
template<class T1, class T2, class T3>
// 类模板名字不是真正的类,而实例化的结果才是真正的类
// Vector类名,Vector<int>才是类型
void Date<T1, T2, T3>::Display()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
int main()
{
// 类模板只能进行-显式-实例化
Date<int, int, int> d(2020, 1, 1);
d.Display();
return 0;
}