- C++中带变量模板
如何理解带变量模板?
下面给出形式:
template//这里size是变量 class MyArray{ public: MyArray() { pMem = new _Ty[size]; } _Ty& operator[](int index) { return pMem[index]; } protected: _Ty* pMem; }; 完成带变量的模板定义该如何使用它呢? MyArray iArray; // 正确使用 int num = 3; MyArray iArray2; //错误 不能传入变量 //这里常属性的变量 const size_t size =4; MyArray iArray; // 正确使用
- 函数模板特殊化
就是函数模板的重载
解决普通函数和函数模板同名的情况:
int Max(int a, int b)
{
cout << "普通函数被调用" << endl;
return a > b ? a : b;
}
template
_Ty Max(_Ty parm1, _Ty parm2)
{
cout << "函数模板被调用" << endl;
return parm1 > parm2 ? parm1 : parm2;
}
template
_Ty1 Max(_Ty1 a, _Ty2 b)
{
cout << "函数模板重载被调用" << endl;
return a > b ? a : b;
}
调用情况如下:
Max(1, 2); //函数模板和普通函数都可以使用时,优先调用普通函数
Max(1, 2);//显示调用 调用函数模板
Max(1.1, 2); //优先调用类型一致的函数



