您的位置:首页 > 教育 > 培训 > 平台搭建阳光房_室内设计公司官网_2345网址导航官网下载_seo培训价格

平台搭建阳光房_室内设计公司官网_2345网址导航官网下载_seo培训价格

2025/7/15 19:25:30 来源:https://blog.csdn.net/2302_80472547/article/details/143030648  浏览:    关键词:平台搭建阳光房_室内设计公司官网_2345网址导航官网下载_seo培训价格
平台搭建阳光房_室内设计公司官网_2345网址导航官网下载_seo培训价格

文章目录

  • 函数模板
    • 1.函数模板概念
    • 2.函数模板格式
    • 3.函数模板的实例化
    • 4.模板参数的匹配原则
  • 类模板
    • 1.类模板的定义格式

函数模板

1.函数模板概念

函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本

2.函数模板格式

template<typename T,typename T2,.......,typename Tn>
返回值类型 函数名(参数列表){}
template<typename T>
void Swap( T& left, T& right)
{
T tmp = left;
left = right;
right = tmp;
}

3.函数模板的实例化

  1. 隐式实例化:让编译器根据实参推演模板参数的实际类型
template<typename T>
void Swap( T& left, T& right)
{
T tmp = left;
left = right;
right = tmp;
}
int main()
{int a = 1,b = 2;
double c = 3,d = 4;
Add(a,b);
Add(c,d);
Add(a,(int)c)
return 0;
}
  1. 显式实例化:在函数名后的<>中指定模板参数的实际类型
template<typename T>
void Swap( T& left, T& right)
{
T tmp = left;
left = right;
right = tmp;
}
int main()
{int a = 1,b = 2;
double c = 3,d = 4;
Add<int>(a,b);
Add<double>(c,d);
return 0;
}

4.模板参数的匹配原则

对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而不会从该模板产生出一个实例。如果模板可以产生一个具有更好匹配的函数, 那么将选择模板

template<class T1, class T2>
T1 Add(T1 left, T2 right)
{
return left + right;
}
int main()
{
Add(1, 2); //非模板函数
Add(1, 2.0); //模板函数可以产生更好匹配的函数,调用模板函数
return 0;}

类模板

1.类模板的定义格式

template<class T1, class T2, ..., class Tn>
class 类模板名
{
};
``
## 2. 类模板的实例化
类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。```cpp
// Stack是类名,Stack<int>才是类型
//stack st1;//是错误的
Stack<int> st1; // int
Stack<double> st2; // double

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com