为什么模板类的声明和实现必须定义在一个.h文件中?

”模板类的实现,脱离具体的使用,是无法单独的编译的;把声明和实现分开的做法也是不可取的,必须把实现全部写在头文件里面。“这个的原理是啥啊,越详细越好。

http://blog.csdn.net/lichengyu/article/details/6792135 这位博主讲的蛮好的

1.链接的时候,需要实例化模板,这时候就需要找模板的具体实现了。假设在main函数中调用了一个模板函数,这时候就需要去实例化该类型的模板。注意main函数里面只包含了.h文件,也就是只有模板的声明,没有具体实现。就会报错。
2.而模板的实现.cpp里面,虽然有模板的具体实现,但是没有谁在该.cpp里面使用一个模板函数,就不会生成一个具体化的实例。

我搞懂了

这个是编译器实现的限制,理论上也是可以做到模板分离的

“而模板的实现.cpp里面,虽然有模板的具体实现,但是没有谁在该.cpp里面使用一个模板函数,就不会生成一个具体化的实例”,这句话还是不太理解,我觉得main函数应该显示指定了类型,然后去调具体的函数。