C++_模板的实例化与具体化。
2015-08-10 15:21
381 查看
模板声明 template<typename/class T>, typename比class最近后添加到C++标准。
常规模板,具体化模板,非模板函数的优先调用顺序。
非模板函数(普通函数)> 具体化模板函数 > 常规模板
VS2013支持性不好
显示具体化:
具体化表示为某一特定的类型重写函数模板,声明的含义是使用独立的,专门的函数定义显示地为 特定类型生成函数定义。
显示具体化声明在关键字template后包含<>.
如:
显示实例化:
实例:如函数调用swap(i,j)会导致编译器生成swap()的一个实例,该实例使用 int 类型。
句法:声明所需的种类用<>符号指示类型,并在声明前加上关键字template:
实例化示例:
常规模板,具体化模板,非模板函数的优先调用顺序。
非模板函数(普通函数)> 具体化模板函数 > 常规模板
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);
相关文章推荐
- [c语言]输入三个单词,输出最长单词
- 解决c/c++的sequence points和side effects问题
- [leetcode-96]Unique Binary Search Trees(c++)
- &&和||优先级
- c++ i++和++i的区别
- c++域操作符
- C++与Java的语法区别
- C++ 的那些坑 (Day 1)
- 瑞士轮
- C++实现Miller-Rabin素数测试
- Mac周边环境 goBASIC语言HelloWorld
- [leetcode-94]Binary Tree Inorder Traversal(c++)
- A + B高精度
- 二叉树的先序,中序,后序遍历 c语言
- 接水问题
- C++中随机函数rand()和srand()的用法
- C语言基础小知识
- 银行取款机c++实现
- C++中对字符操作的函数集锦
- 三国游戏