有时,有两个或多个类,其功能相同,仅仅数据类型不同,可以采用类模板来避免重复工作。
template <class numtype>
class Compare {
public:
Compare(numtype a, numtype b) {
x = a;
y = b;
}
numtype max() {
return (x > y) ? x : y;
}
};
用类模板定义对象: Compare <int> cmp(1, 2); 在类模板名后用尖括号指定实际的类型名。
如果类模板的成员函数在类外定义,应当写成如下形式:
template <class numtype>
numtype Compare<numtype>::max() {
return (x > y) ? x : y;
}
一个类模板的例子:
#include <iostream>
using namespace std;
template <class numtype>
class Compare {
public:
Compare(numtype a, numtype b) {
this->a = a;
this->b = b;
}
numtype max() {
return (a > b) ? a : b;
}
numtype min();
private:
numtype a;
numtype b;
};
template <class numtype>
numtype Compare<numtype>::min() {
return (a > b) ? b : a;
}
int main() {
Compare <int>c1(1, 2);
int x = c1.max();
cout << x;
system("pause");
}