[C++]为什么模板函数的声明与实现都放在.h头文件中_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > [C++]为什么模板函数的声明与实现都放在.h头文件中

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

 2016/5/12 5:33:11  aigo  程序员俱乐部  我要评论(0)
  • 摘要:原文:http://www.360doc.com/content/13/0722/14/10072361_301717293.shtml当你不使用这个模版函数或模版类,编译器并不实例化它,当你使用时,编译器需要实例化它,因为编译器是一次只能处理一个编译单元,也就是一次处理一个cpp文件,所以实例化时需要看到该模板的完整定义.所以都放在头文件中这不同于普通的函数,在使用普通的函数时,编译时只需看到该函数的声明即可编译,而在链接时由链接器来确定该函数的其实模板实现不能放在cpp文件中
  • 标签:模板 实现 函数 文件 c++ 什么 为什么 头文件

?

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

?

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

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

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

?

?

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

?

?

发表评论
用户名: 匿名