《C++ primer》学习笔记之二十四:template function 的定义
来源:互联网 发布:博客源码资源站 编辑:程序博客网 时间:2024/06/05 12:46
template function 的定义和使用:
1. //定义一个function template
//te.h
template <typename T> void f(T t); //声明一个function template。 typename T 叫template parameter
template <typename T> //定义一个function template
void f(T t){ cout << << "f(" << typeid(t).name << ")" << endl; };
template < template <typename elemT> T > void f(T t); //error:企图在template parameter内再嵌套一层template是行不通的。
//调用
//te.cpp
f("abc"); //调用f,此时会实例化一个function: void f(char const *)
//取函数地址
int (*pf)(int) = f; //取函数地址,此操作也会实例化一个function: void f(int)
(*pf)("abc"); //即使没有这个调用,void f(int)也会实例化
//显示实例化
template void f(string); //会在此处实例化一个voidf(string)
//不明白这样做有什么目的?好像对于编译器内部实现template有帮助
function template要在header中定义(仅仅声明不行),在每个使用该function的文件中包含这个header。
详细见上面的8(常见的编译错)之3(template function引起的link错误)。
一个function template与一个普通的function的区别在于:function template可以多次实例话,即它的body的内容可以变化。
这点与变量——常量的区别很像。
关键点是:1.编译器何时实例化一个template_function
2.如何实例化
如果编译器决定实例化template,在实例化之后要做的事情就是编译这个生成的function,像编译普通的function一样。
- 《C++ primer》学习笔记之二十四:template function 的定义
- 《C++ primer》学习笔记之二十五:template function 的实例化
- 《C++ primer》学习笔记之十四:c-style字符串的长度算‘/0’在内
- C++Primer学习笔记之二
- 《C++ primer》学习笔记之二十三: namespace的定义和使用
- 《C++ primer》学习笔记之二十六:None-type template parameter
- 函数模板 Function Template(C++Primer-10)
- 学习《c++primer》笔记二
- C Primer Plus学习 二十四 字符串输入 fgets ()函数
- 《C Primer Plus》学习笔记之 C数据的属性(二)存储类
- 《C++ primer》学习笔记之三十四:function overload resolution之二寻找可行函数集合
- 《C++ Template. The Complete Guide》笔记之二 Function Templates
- C Primer Plus 学习笔记系列之(二)
- 《C Primer Plus》 学习笔记系列之(二)
- c++Primer学习笔记之二:c++快速入门_1
- C++ Primer学习笔记 之 变量的声明与定义
- c语言学习笔记二十四
- function template函数模板概念笔记----C++学习之路
- 在ListView列中插入其他组件
- 《C++ primer》学习笔记之二十一:有趣的变参函数
- 《C++ primer》学习笔记之二十二: 函数指针
- 《C++ primer》学习笔记之二十三: namespace的定义和使用
- FuctionMod.bas
- 《C++ primer》学习笔记之二十四:template function 的定义
- Module.bas
- MainFrm.frm
- 求不大于指定整数的最大素数
- VRSW.vbw
- 《C++ primer》学习笔记之二十五:template function 的实例化
- VRSW.vbp
- VRSW.INI
- 《C++ primer》学习笔记之二十六:None-type template parameter