这期间有涉及到函数模板与模板函数,类模板与模板类的概念 (类似于类与类对象的区别)
注意:模板类的函数声明和实现必须都在头文件中完成,不能像普通类那样声明在.h文件中,实现在.cpp文件中。
1、函数模板和模板函数
函数模板:函数模板的重点是模板。表示的是一个模板,专门用来生产函数。
template <typename T>
void fun(T a)
{
}
模板函数:是函数模板的实例化,是一个函数。
fun(7);//隐式生成fun <int>
fun(3.9);//隐式生成fun <double>
fun(‘b’);//隐式生成fun <char>
Shape* ps = new Cirlcle;
fun(ps);//隐式生成fun <Shape*>
2、类模板和模板类
类模板:类模板的重点是模板。表示的是一个模板,专门用于产生类的模子。
template <typename T>
class Vector
{
};
模板类:类模板的实例化,是一个包含具体数据类型的类
函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。即函数模板允许隐式调用和显式调用而类模板只能显示调用。