C++ 链接阶段如何处理模板定义

C++ 链接阶段如何处理模板定义,c++,C++,模板类/函数是在编译时生成的,因此,当: temp.h包含一个模板函数或类 A.cpp使用temp.h的函数,使用int作为类型 B.cpp使用temp.h的函数,使用int作为类型 A和B被编译,现在两个对象输出中都有一个使用int类型的函数。通常,如果您两次定义同一事物并尝试链接,则会出现错误。因此,生成的定义有什么不同,因为从概念上来说,它只是一个生成的定义。可能是已故的Watcom C++编译器的复制品,它是通过在对象文件的.COM(“common”)部分生成模板函数定义来实现的。公

模板类/函数是在编译时生成的,因此,当:

  • temp.h包含一个模板函数或类
  • A.cpp使用temp.h的函数,使用int作为类型
  • B.cpp使用temp.h的函数,使用int作为类型

A和B被编译,现在两个对象输出中都有一个使用int类型的函数。通常,如果您两次定义同一事物并尝试链接,则会出现错误。因此,生成的定义有什么不同,因为从概念上来说,它只是一个生成的定义。

可能是已故的Watcom C++编译器的复制品,它是通过在对象文件的.COM(“common”)部分生成模板函数定义来实现的。公共部分中的公共内容不会被链接器重复,也不会触发重复错误。