模板类cpp和h分离
时间: 2024-12-04 22:27:03 浏览: 14
在C++中,模板类的实现通常分为两个部分:`.cpp`文件(源文件)和`.h`文件(头文件)。这种分离是为了实现模板类的"模板分离"(Template Separation),其目的是提高代码组织性和避免循环依赖。
**模板类声明在.h文件中**:
`.h`文件通常包含了模板类的声明,包括类名、模板参数以及成员函数的原型,但不包含具体的实现在内,以防使用者直接访问私有细节:
```cpp
// MyClass.h
#ifndef MY_CLASS_H
#define MY_CLASS_H
template <typename T>
class MyClass {
public:
void method(T param);
private:
// 类的其他成员...
};
#endif // MY_CLASS_H
```
**模板类实现放在.cpp文件中**:
`.cpp`文件负责实际的模板类定义,其中包含了模板的实例化和所有成员函数的实现:
```cpp
// MyClass.cpp
#include "MyClass.h"
template <typename T>
void MyClass<T>::method(T param) {
// 实现细节...
}
```
当你需要使用这个模板类时,只需包含头文件即可,编译器会在链接阶段根据模板参数的实际类型生成对应的代码:
```cpp
#include "MyClass.h"
using namespace std;
int main() {
MyClass<int> myInt;
myInt.method(5); // 使用整数实例
return 0;
}
```
这样做的优点在于保持了接口的清晰,并允许编译器在编译期间进行类型检查,发现潜在错误。
阅读全文