所谓元编程就是编写直接生成或操纵程序的程序,C++ 模板给 C++ 语言提供了元编程的能力,模板使 C++ 编程变得异常灵活,能实现很多高级动态语言才有的特性(语法上可能比较丑陋,一些历史原因见下文)。普通用户对 C++ 模板的使用可能不是很频繁,大致限于泛型编程,但一些系统级的代码,尤其是对通用性、性能要求极高的基础库(如 STL、Boost)几乎不可避免的都大量地使用 C++ 模板,一个稍有规模的大量使用模板的程序,不可避免的要涉及元编程(如类型计算)。本文就是要剖析 C++ 模板元编程的
类型模板
类型模板包括函数模板和类模板,基本上是C++开发人员接触模板编程的起点。
下面代码演示了函数模板和类模板的使用方法:
// 函数模板
template
T add(const T& a, const T& b) {
return a + b;
}
// 类模板
template
class Point {
private:
T x[3];
...
};
类型模板以template开始声明,尖括号内的typename关键字可用class替代。类型模板中typename和class