我在读一本较旧的数据结构书籍,它说当你进行模板类编程时,你应该在 .h 文件的末尾包含 .cpp。
据我所知,您必须在 .h 文件中为任何模板类成员函数执行完整的函数实现 - 这是由于模板编译器的工作方式所致。
我学到的唯一可以放在模板类的实现文件中的函数是模板特化函数,即:template<> Class<Type>::function_name()
.
为什么这本书建议在.h 的末尾包含.cpp?这只是一种将实现分离到不同文件中同时让它们与头文件一起编译的方法吗?如果是这样,您会在哪里放置真正的特化 - 我猜他们不能进入 header 包含的 .cpp 中。
最佳答案
很可能作者更喜欢在不同的文件中声明和定义,我猜这是因为这样更容易在声明和定义之间跳转。
但是拥有“cpp”文件扩展名有点令人困惑。通常这些文件被称为“ipp”,代表“内联 C++”。
关于c++ - 在模板头文件末尾包含 .cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583710/