?
原文:http://www.360doc.com/content/13/0722/14/10072361_301717293.shtml
?
当你不使用这个模版函数或模版类,编译器并不实例化它 ,当你使用时,编译器需要实例化它, ?
?因为编译器是一次只能处理一个编译单元, 也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义 . ? ?所以都放在头文件中 ? ? ? ??
? 这不同于普通的函数, 在使用普通的函数时,编译时只需看到该函数的声明即可编译, 而在链接时由链接器来确定该函数的
?
?
其实模板实现不能放在cpp文件中,主要就是CPP在c++编译期间不能决定模板参数的类型,所以不能生成模板函数的实例,所以他会把模板类型带到链接期间,如果这个期间有函数调用了该实例,这个时候由于没有把模板实例到特定类型,就会导致编译错误。但是如果不调用该模板函数,那么是不会出现错误的。
?
?