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

来源:互联网 发布:股灾一周年知乎 编辑:程序博客网 时间:2024/05/16 10:10

模板声明 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);


0 0
原创粉丝点击