C++模板的对象代码是否在可执行文件和动态库中重复?



库使用模板类TemplCls<TArg>,链接的可执行文件也使用它。现在,如果同一最终二进制文件(库或可执行文件)的两个源文件使用具有相同参数的模板,则只会保留模板的一个实例化。

如果动态库和可执行文件都使用模板,会发生什么情况?由于可执行文件的链接器(通常)会收到一个终端选项来与动态库链接,它是否还会记住模板已经在库本身中实例化,因此,它不需要,将其实例化到可执行文件中?

如果动态库和可执行文件都使用模板会发生什么?

每个人都将获得使用的每个模板方法的副本。

你不需要这个问题,你可以看看(在未剥离的二进制文件中):

nm -AC a.out foo.so | grep TemplCls

相关内容

最新更新