C++ 除了支持函数模板,还支持类模板(Class Template)。函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。
声明类模板的语法为:
templateclass 类名{ //TODO: };
类模板和函数模板都是以 template 开头(当然也可以使用 class,目前来讲它们没有任何区别),后跟类型参数;类型参数不能为空,多个类型参数用逗号隔开。
一但声明了类模板,就可以将类型参数用于类的成员函数和成员变量了。换句话说,原来使用 int、float、char 等内置类型的地方,都可以用类型参数来代替。
假如我们现在要定义一个类来表示坐标,要求坐标的数据类型可以是整数、小数和字符串,例如:
- x = 10、y = 10
- x = 12.88、y = 129.65
- x = “东经180度”、y = “北纬210度”
这个时候就可以使用类模板,请看下面的代码
#includeusing namespace std; template class Point{ public: Point(T1 x,T2 y):m_x(x),m_y(y){}; T1 getX() const;//获取x坐标 void setX(T1 x);//设置x坐标 T2 getY() const;//获取y坐标 void setY(T2 y); //设置y坐标 private: T1 m_x; //x坐标 T2 m_y; //y坐标 }; template //模板头 //函数头 T1 Point ::getX() const { return m_x; } template //模板头 //函数头 void Point ::setX(T1 x) { m_x=x; } template //模板头 //函数头 T2 Point ::getY() const { return m_y; } template //模板头 //函数头 void Point ::setY(T2 y) { m_y=y; } int main(){ Point p1(10,20); cout <<"x="<



