c++模板是什么?帮我解释下,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:06:07
没事翻到“c++模板”这个新名词:模板可是C++的一大技术啊,C++的泛型编程和STL可就靠它了。。。
你有空看一看c++primer吧。。。。
(这是我搜的)我只学过c++的基础不明白这个,就拜托了!

参考读物:
《Thinking in C++: vol1 & vol2》 Bruce Eckel - www.bruceeckel.com
《C++ Template》 David Vandevoorde, Nicolai M. Josuttis

推荐读物:
《modern C++ design》Andrei Alexandrescu

1 介绍
模板是一个包含有未指定类型的函数或类,因此模板并不是一个真正的函数或类,而是代表了一组函数或类,当为模板函数或类指定了一种类型时,就生成了此模板的一个实例,这个操作叫做模板实例化(instantiation)。也可以为某一种类型提供不同于模板的定义,这个称为特化定义(specialization)。对于有多个类型参数的模板,还可以只指定一部分类型,这个称为偏特化定义(partial specialization)。
模板不是实体,因此模板的声明和定义通常都放在头文件中。

2 函数模板
2.1 声明
template<class T>
inline void func(T param)
{
}

2.2 函数模板不支持默认类型参数,但支持函数的默认参数
template<class T/* = type,不可以 */>
void func(T param, int size = sizeof(T))
{
}

2.3 函数模板显式实例化声明
template void func<int>(int param);
显式实例化后的函数模板不能再有不能转换的类型的调用
显式实例化后的函数模板不能被特化定义

2.4 特化定义函数模板
template<>
void func