C++_模板的实例化与具体化。

模板声明 template<typename/class T>,  typename比class最近后添加到C++标准。


常规模板,具体化模板,非模板函数的优先调用顺序。

非模板函数(普通函数)> 具体化模板函数 > 常规模板




VS2013支持性不好


显示具体化:

具体化表示为某一特定的类型重写函数模板,声明的含义是使用独立的,专门的函数定义显示地为 特定类型生成函数定义。

显示具体化声明在关键字template后包含<>.

如:

template<> void swap<job>(job &j1, job &j2);
vs2013不支持:


void swap(Any &a, Any &b);

struct job
{
	char name[40];
	double salary;
	int floor;
};

template<> void swap<job>(job &j1, job &j2);

void Show(job &j);

int main(){
	using namespace std;

	template void swap<job>(job &, job &);

	int i = 10, j = 20;
	
	swap(i, j);


	return 0;
}


template<typename Any>
void swap(Any &a, Any &b){
	Any temp;
	temp = a;
	a = b;
	b = temp;
}

template<> void swap<job>(job &j1, job &j2){
	double temp_sal;
	temp_sal = j1.salary;
	j1.salary = j2.salary;
	j2.salary = temp_sal;
}



显示实例化:

实例:如函数调用swap(i,j)会导致编译器生成swap()的一个实例,该实例使用 int 类型。

句法:声明所需的种类用<>符号指示类型,并在声明前加上关键字template:

实例化示例:

 template void swap<int>(int,  int);


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值