徐州市住房建设局网站首页,室内设计师网址导航,小程序定制开发中软,手机在线代理网页模板 #xff08;泛型编程#xff09;
函数模板
语法#xff1a;
template typename 形参名#xff0c;typename 形参名#xff0c;...... 返回类型 函数名(参数列表)
{函数体
}定义函数模板时typename关键字可以替换成class#xff0c;效果一样。 template泛型编程
函数模板
语法
template typename 形参名typename 形参名...... 返回类型 函数名(参数列表)
{函数体
}定义函数模板时typename关键字可以替换成class效果一样。 templateclass T自动类型推导必须推导出一致的数据类型T才可以使用。模板必须要确定出T的数据类型才能使用。函数模板调用时如果利用自动类型推导不可以发生隐式类型转换。函数模板调用时如果显示指定类型可以发生隐式类型转换。如果函数模板和普通函数都可以调用优先调用普通函数。可以通过空模板参数列表的形式强制调用函数模板。函数模板可以发生函数重载。如果函数模板可以产生更好的匹配优先调用函数模板。函数模板针对特定类型可以具体化。例如person类型:
//通用模板
templateclass T
bool myCompare(T a, T b)
{
...
}
//具体化
template bool myCompare(Person p1 Person p2)利用具体化的模板可以解决自定义类型的通用化。
类模板
语法
templatetypename 形参名class 形参名… class 类名
{ ... };定义类模板时typename关键字可以替换成class效果一样。 templateclass T类模板没有自动类型推导的使用方式。只能用显示指定类型。类模板在模板的参数列表中可以有默认参数类型。
templateclass NameType, class AgeType int
class Person
{
...
};类模板中的成员函数在调用时才创建。
STL标准模板库
智能指针
引用
引用做参数
运算符重载