c++模板和头文件

标签 c++ templates file header

所以,我听说 C++ 模板不应该分为头文件 (.h) 和源文件 (.cpp)。

例如,这样的模板:

template <class T>
class J
{   
   T something;
};

这是真的吗?为什么会这样?

如果因此我必须将声明和实现放在同一个文件中,我应该将它放在 .h 文件还是 .cpp 文件中?

最佳答案

标题。

这是因为模板是在编译时而不是链接时实例化的,并且不同的翻译单元(大致相当于您的 .cpp 文件)仅在链接时相互“了解”。 header 往往在编译时被广泛“了解”,因为您在任何需要它们的翻译单元中#include它们。

阅读 https://isocpp.org/wiki/faq/templates了解更多。

关于c++模板和头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612791/

相关文章:

c++ - 在其他线程中迭代该并发 vector 时调用 concurrency::concurrent_vector::push_back 是否是并发安全的?

c++ - 使用预处理器C++定义常见错误消息

c++ - 如何找到两个 discriptos 之间的距离?

java - 使用 Java 将文件上传到网站

c - 在 C 中将数字从文件保存到数组

c++ - gdb 报告段错误 - 如何知道在哪里?

php - 覆盖特定的第三方 Woocommerce 插件模板

javascript - vue.js 的 <template> 语法不起作用

c++ - 单个函数的两个可变参数模板?第2部分

python - 在 python 中打开文件描述符