版权声明:本文为博主原创文章,转载请注明出处-- https://blog.csdn.net/qq_38790716/article/details/89475618
1.函数模板与类模板的区别
相同点:
- 1.以关键字template开始,后跟一个模板参数列表
- 2.两者定义的类型参数目的相同,都是将数据的类型参数化
不同点:
- 1.函数模板的实例化是由编译程序在处理函数调用时自动完成的;而类模板的实例化必须由程序员在程序中显式地指定。即函数模板允许隐式调用和显式调用,而类模板只能显示调用
2.类模板——模板类(class template——template class)
类模板的重点是模板。表示的是一个模板,专门用于产生类的模子。例子:
template <typename T>
class Vector
{
...
};
使用这个 模板就可以产生很多的 (类), 、 、 、 。
模板类的重点是类。表示的是由一个模板生成而来的类。例子:
上面的 全是模板类。
3.函数模板——模板函数(function template——template function)
函数模板的重点是模板。表示的是一个模板,专门用来生产函数。例子:
template <typename T>
void fun(T a)
{
...
}
在运用的时候,可以显式( )生产模板函数, 。
也可以在使用的过程中由编译器进行模板参数推导,帮你隐式( )生成。
fun(6);//隐式生成fun<int>
fun(8.9);//隐式生成fun<double>
fun(‘a’);// 隐式生成fun<char>
Shape* ps = new Cirlcle;
fun(ps);//隐式生成fun<Shape*>
模板函数的重点是函数。表示的是由一个模板生成而来的函数。例子:
上面显式( )或者隐式( )生成的 都是模板函数。