原标题:模板显式、隐式实例化和(偏)特化、具体化的详细分析
(点击上方公众号,可快速关注)
来源:大米粒ing,2013-08-29
http://blog.csdn.net/chenyiming_1990/article/details/10526371
如有好的文章
最近看了看到了模板的特化,突然想起来上说的显式具体化、隐式具体化、特化、偏特化、具体化等概念弄得头晕脑胀,我在网上了找了好多帖子,才把概念给理清楚。
一下是我把再网上找的资料整理一下。
看着这么多叫法,其实就是三种。
1. 显示实例化
2. 隐式实例化
3. 特化(=具体化)、偏特化
一、实例化
1.显示、隐式实例化
什么是实例化:一个通过使用具体值替换模板参数,从模板产生的普通类,函数或者成员函数的过程。
显示实例化:通过名字可见,就是清楚的表明你要实例化的类型
隐式实例化:通过编译器自己推测判断要实例化的类型。
比如一个模板:
template//函数模板实现
voidswap(T&a,T&b)
{
Ttemp;
temp=a;
a=b;
b=temp;
}
a. 显示实例化
template void swap();// 无须给该函数重新编写函数体,这只是个声明
为什么要显示实例化?
主要是提高效率,当显式实例化模板时&