1 函数模板
主要讲述了函数模板的使用:
template<typename T>
函数模板的重载机制
2 类模板
template<typename T>
在类模板中,注意下面的细节:
stack< stack<int> > mystackstack;
红色的空格必须,因为没有这个空格,将会和>>混淆了。
3。非型别模板参数:
template<typename t, int MaxSize>
class stack
{
T elements[MaxSize];
int numberofElements; //Current Point.
}
对于这种可以这样初始化
stack<int,40> mystack; ---------一定根据前面的定义而来。
这样进行模板参数传递的时候,可以制定一个具体大小的栈。
也可以制定预设的值进行初始化。
template<typename = int, int MaxSize = 100>
4。
看下面这段代码: 这个
template<typename T,int val>
T AddValue(T const&x)
{
return x+val;
}
这种技术的局限:
1。浮点数和对象作为模板参数不可。
template <double> 不可
template<std::string> 不可
5.高阶技术:
如果class templates拥有base classes,那么内部出现的成员函数并菲总等价于this->fun()即使fun由基类继承而来。
主要讲述了函数模板的使用:
template<typename T>
函数模板的重载机制
2 类模板
template<typename T>
在类模板中,注意下面的细节:
stack< stack<int> > mystackstack;
红色的空格必须,因为没有这个空格,将会和>>混淆了。
3。非型别模板参数:
template<typename t, int MaxSize>
class stack
{
T elements[MaxSize];
int numberofElements; //Current Point.
}
对于这种可以这样初始化
stack<int,40> mystack; ---------一定根据前面的定义而来。
这样进行模板参数传递的时候,可以制定一个具体大小的栈。
也可以制定预设的值进行初始化。
template<typename = int, int MaxSize = 100>
4。
看下面这段代码: 这个
template<typename T,int val>
T AddValue(T const&x)
{
return x+val;
}
这种技术的局限:
1。浮点数和对象作为模板参数不可。
template <double> 不可
template<std::string> 不可
5.高阶技术:
如果class templates拥有base classes,那么内部出现的成员函数并菲总等价于this->fun()即使fun由基类继承而来。