c++ extern修饰模板
时间: 2023-07-05 11:28:47 浏览: 90
C++ 模板
当在不同的源文件中使用同一个模板时,需要使用 extern 关键字来声明模板实例,以便在链接时能够正确地找到和使用这些实例。
具体来说,当模板被定义在头文件中时,每个使用该头文件的源文件都会包含该模板的定义,导致在链接时出现重复定义的问题。为了避免这种情况,可以使用 extern 关键字来声明模板实例,并将其定义放在一个单独的源文件中。
例如,假设有一个头文件 template.h 包含如下模板定义:
```c++
template<typename T>
void foo(T t);
```
在实现源文件 template.cpp 中,可以使用 extern 关键字声明该模板实例:
```c++
#include "template.h"
template<typename T>
extern void foo(T t);
template<typename T>
void foo(T t)
{
// 实现代码
}
```
在其他源文件中,只需要包含 template.h 头文件即可调用 foo 函数,编译器会自动在链接时将所有实例链接到一起。
阅读全文