c++模板函数,模板声明应该放在什么位置

2024-11-13 19:41:38
推荐回答(1个)
回答(1):

也不是只能放在.h里面,但是推荐放在.h里面。STL模板实现全部是放在.h里面的。
------------------
编译能通过。
1)参与编译的只是.cpp文件,不会报错的原因,是因为它能在.h里面找到模板的声明。
链接错误。
1)链接的时候,需要实例化模板,这时候就需要找模板的具体实现了。假设在main函数中调用了一个模板函数,这时候就需要去实例化该类型的模板。注意main函数里面只包含了.h文件,也就是只有模板的声明,没有具体实现。就会报错。
2)而模板的实现.cpp里面,虽然有模板的具体实现,但是没有谁在该.cpp里面使用一个模板函数,就不会生成一个具体化的实例。
ps:模板是在需要的时候,才会去生成一个具体化的实例的,比如,你只要一个int型的实例,模板就只会给你生成一个int型的实例,模板本身是不会被执行的(也就是模板本身不产生汇编指令),是模板生成的具体化实例才产生指令(这个实例是隐藏的,我们是看不到的)