gpt4 book ai didi

c++ - 模板类源文件

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:44 24 4
gpt4 key购买 nike

我一直在寻找一种方法来分离模板类的声明和定义。我被推荐了一个解决方案,它在 Header.h 和 Source.cpp 中都包含了守卫,而 Header.h 在包含守卫的 #endif 之后包含了 Source.cpp。

我认为链接器会提示模板类的重新定义(多个符号?),但不知何故却没有,为什么不呢?

这不会导致二进制结果中出现重复代码吗?每次头文件包含在源文件中时,也包含相同类的定义。

最佳答案

对于普通符号,这确实会导致双重定义。但是,模板被区别对待,就好像它们具有内部链接一样。因此,没有双重定义。

但是,将实现放入 cpp 文件显然是个坏主意——这会混淆许多工具链,这些工具链按照惯例假定要编译这些文件。将文件重命名为 ipp – 这通常用于此类模板实现文件。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com