显示实例化和具体化的问题

c_fresher 2009-03-20 06:27:14
疑问:
显示实例化和直接用普通函数模板,有什么优势吗?
似乎就代码来看,有了普通的函数模板
template<typename any>
void fun(any,any);


即使我不再显示实例化一下:
template void fun(int,int);

而直接用
int a=3,b=5; 
fun(a,b);

也不会有问题啊,那单独写一个显示实例化干吗呢
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanehan 2009-05-27
  • 打赏
  • 举报
回复
楼上 都放在.h文件中,第一 编译比较慢,你想下,包含如果你修改了这个.h文件,所有包含这个文件的文件都要被编译一次 第二 设计上比较乱,声明实现都放在一个文件中,那难看啊
不过对于模板的声明和实现在很多编译器里是不可以分离的,但你也可以把他们分离到两个.h文件中,这是个方法,用于减少编译时间
c_fresher 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
显式实例化的好处是可以不必把模板的实现代码放在头文件
否则模板的所有代码必须放在同一个头文件中,包括它的函数体
[/Quote]
同时还想问下,如果我就把模板函数的声明和实现的函数体都写在.h中,会有什么不好的吗
c_fresher 2009-03-23
  • 打赏
  • 举报
回复
喔好 我试试
arong1234 2009-03-20
  • 打赏
  • 举报
回复
你的测试太简单了
把模板声明放在一个头文件
模板实现代码放一个cpp文件
在另外一个cpp使用它看看

[Quote=引用楼主 c_fresher 的帖子:]
疑问:
显示实例化和直接用普通函数模板,有什么优势吗?
似乎就代码来看,有了普通的函数模板

C/C++ codetemplate<typename any>
void fun(any,any);



即使我不再显示实例化一下:

C/C++ codetemplate void fun(int,int);


而直接用

C/C++ codeint a=3,b=5;
fun(a,b);


也不会有问题啊,那单独写一个显示实例化干吗呢
[/Quote]
arong1234 2009-03-20
  • 打赏
  • 举报
回复
显式实例化的好处是可以不必把模板的实现代码放在头文件
否则模板的所有代码必须放在同一个头文件中,包括它的函数体

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧