[C++]为什么模板函数的声明与实现都放在.h头文件中

原文:http://www.360doc.com/content/13/0722/14/10072361_301717293.shtml

当你不使用这个模版函数或模版类,编译器并不实例化它 ,当你使用时,编译器需要实例化它,  

 因为编译器是一次只能处理一个编译单元, 也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义 .    所以都放在头文件中         

  这不同于普通的函数, 在使用普通的函数时,编译时只需看到该函数的声明即可编译, 而在链接时由链接器来确定该函数的

其实模板实现不能放在cpp文件中,主要就是CPP在c++编译期间不能决定模板参数的类型,所以不能生成模板函数的实例,所以他会把模板类型带到链接期间,如果这个期间有函数调用了该实例,这个时候由于没有把模板实例到特定类型,就会导致编译错误。但是如果不调用该模板函数,那么是不会出现错误的。

猜你喜欢

转载自aigo.iteye.com/blog/2283617
今日推荐