基本语法
声明类模板的语法为:
template<typename 类型参数1, typename 类型参数2, …>
class 类名{
//TODO:
};
在类外定义成员函数时仍然需要带上模板头,格式为:
template<typename 类型参数1 , typename 类型参数2 , …>
返回值类型 类名<类型参数1, 类型参数2, ...>::函数名(形参列表){
//TODO:
}
示例
#include <iostream>
using namespace std;
template <typename T1, typename T2>
class Point
{
private:
T1 m_x;
T2 m_y;
public:
Point(T1 x, T2 y) :m_x(x), m_y(y) {}
T1 getX();
T2 getY();
};
template <typename T1, typename T2>
T1 Point<T1, T2>::getX()
{
return m_x;
}
template <typename T1, typename T2>
T2 Point<T1, T2>::getY()
{
return m_y;
}
int main()
{
//使用类模板创建对象时,需要指明具体的数据类型
Point<int, int> p1 (1, 2);
//也可以使用对象指针的方式来实例化
Point<float, float> *p2 = new Point<float, float>(1.23, 4.56);
cout << p1.getX() <<","<< p1.getY() << endl;
cout << p2->getX() << ","<<p2->getY() << endl;
}