重点:
模板实例化只在编译期完成,调用模板就会在对应的编译单元生成模板的二进制数据,即在哪里声明的模板,实例化的时候就会在当前模板位置下实例化函数或者类。
1.如图所示,在main中实例化两次模板,实际上相当于生成了一次int Get(int,int)。
2.无论在哪个源文件下实例化,如果函数已经被实例化过一次,就不会再创建一遍函数。
1.Newtest.h 创建模板
2.Newtest.cpp 实例化一次函数
3.Test.cpp 中调用GetData函数,然后在自身中实例化模板,发现函数的地址是相同的,也就是说明函数只定义了一次。