使用模板类来避免创建静态库是一种好的做法吗

Is it good practice to use template classes to avoid creating a static library?

本文关键字:一种 静态 创建      更新时间:2023-10-16

我正在将一个无锁容器从C移植到C++。我现在正在考虑将类模板化,只使用一个文件,这样最终用户就不必经历链接我的lib的麻烦。他只需要包括模板文件。

不过,我不确定我做的事情是否正确。这种做法好吗?

这很常见;Boost和许多其他C++库仅设计为头(尽管Boost的某些部分需要编译)。STL也是如此,它现在被合并到标准库中。

是。几乎整个C++标准库也都是这样写的,所以你掌握得很好。

这取决于代码的大小。唯一需要考虑的问题是从内联中获得的大小。如果你确保每个模板函数中的代码都很小,那么它应该是可以的。只是为了激励,所有的标准容器都只是表头。

确保您决定创建模板库是出于的正确原因。将容器库作为模板是一个很好的理由:标准C++库的所有容器都是作为模板完成的。简单地避免链接步骤本身不是一个好的理由。