这段时间在复习c++的东西,把一些面试常问的一系列问题罗列下,我方便自己重温
1.函数模板:
函数模板是为参数类型一致,参数个数一样,功能代码相同的一类函数提供的函数接口,在编译时能够动态的匹配
根据以上的严格限制我们可以知道,函数模板其实运用是非常有限的,所以一般不常用,在这里提出来是为了引出类模板的概念
给一个函数模板的例子
#include <iostream>
using namespace std;
template <class T2>
bool cmp(T2 a,T2 b)
{
if(a>=b)
return true;
else
return false;
}
模板可以支持多变量类型
2.类模板:
继承了函数模板的优点,即支持变量类型动态匹配,但为了避免参数类型的限制,在使用时指定类型(也就是说是主动定义,而不是自动匹配),这样使用时更加灵活
给一个类模板的例子
template <class numtype>
class compare
{
public:
compare(numtype a,numtype b)
{
x=a;
y=b;
}
numtype max()
{
return x>=y?x:y;
}
numtype min()
{
return x<=y?x:y;
}
private:
numtype x,y;
};
如何使用呢,如下
compare <int> cmp(4,7)
cout<<cmp.max()<<","<<cmp.min()<<endl;
运行结果是
7,4
小结:
类模板的用途很广,如stl模板,容器类,还有智能指针等都是类模板的应用
注明下,部分例子是引用谭浩强的《c++程序设计》