C++中,类模板是一种特殊的类,它可以定义一个通用的类框架,其中的某些成员变量或成员函数可以在实例化时由具体类型替换。这种机制使得我们能够编写出更加通用的代码,同时也可以提高代码的重用性和可维护性。
类模板的定义类似于普通类的定义,但是需要使用template关键字来声明一个或多个类型参数。例如:
template<class T>
class MyContainer {
public:
MyContainer() {}
void add(T elem);
T get(int index);
private:
T data[100];
int size;
};
template<class T>
void MyContainer<T>::add(T elem) {
data[size++] = elem;
}
template<class T>
T MyContainer<T>::get(int index) {
return data[index];
}
在这个示例中,MyContainer是一个类模板,它有一个类型参数T。我们可以通过MyContainer<int>、MyContainer<double>等形式来实例化这个模板,并且在实例化的过程中将T替换为具体的类型。例如:
MyContainer<int> container;
container.add(1);
container.add(2);
int elem1 = container.get(0); // elem1 = 1
int elem2 = container.get(1); // elem2 = 2
注意,在类模板中定义的成员函数通常需要在类外部进行实现。这是因为类模板中的方法可能会被多个不同的类型实例化,如果将它们的定义放在类内部,会导致代码重复。
类模板是C++中非常强大和灵活的特性。它可以帮助我们编写出通用的代码,并且提高代码的可重用性和可维护性。虽然类模板有一定的学习曲线,但是一旦掌握了它,就能够在实际开发中获得很大的收益。