好久没来了,看来一个月一篇博客是无法实现了!
本文不讨论关于模板的代码组织方式,这些讨论网上极多,本文主要讨论模板代码实例化后的连接问题。一下纯粹自己的观点,如果有不对的地方欢迎指正。
模板在实例化的时候,才进行语法检查和针对实例生成相应的代码,这个时候生成的代码的访问的范围与模板所在的位置和各个类型对应的位置的访问范围一致,具体实例见下面的例子。
在下面的例子中,模板test_name::voidtemp(T &tmp, T1 &b) ;被调用,调用的时候使用了两个类型,一个是class A,一个是class B,由于调用的test_name空间下有void fun(T &a, T1 &b);函数,class A所在的命名空间有函数void fun(T &a, T1 &b),