转型操作
- 接受目标型式作为模板参数
- Programmer *p = dynamic_cast<Programmer*>(e)
模板工作原理
- 使用template<typename T>定义函数模板或者类模板
- 体化(instantiation):使用特定的模板实际参数,生成真正的模板函数和模板类
- 编译模板类和模板函数,生成最终的程序代码
模板代码
- 一般放在头文件中:编译器需要看到模板源文件
模板的特点:
- 抽象性:模板代码高度抽象,是函数和类的模范
- 安全性:型式检查能够发现大多数型式失配问题
- 通用性:函数和类模板定义一次,按需生成函数和类的实体
- 易用性:接口相对直观且高度一致
- 效率:减少代码冗余,提升编程效率;通过编译优化,提升程序的执行效率
模板用途
- 函数模板:构造函数集,实现不依赖特定数据结构的抽象算法
- 类模板:构造类集,实现抽象数据结构
- 元编程:构造在编译期执行的运算,提升程序的执行效率
怕什么真理无穷,进一寸有一寸的欢喜。---胡适