网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

【C++语法】templates-创新互联

template 背景

为适应如下代码,提高代码重用性(静态多态)而出现

成都创新互联主营织金网站建设的网络公司,主营网站建设方案,成都APP应用开发,织金h5小程序制作搭建,织金网站营销推广欢迎织金等地区企业咨询
int Mymax(int x, int y){return x >y ? x : y;
}
double Mymax(double x, double y){return x >y ? x : y;
}

模板写法如下:

template// or templateT Mymax(T x, T y){return x >y ? x : y;
}
函数模板与普通函数的调用顺序
  1. 模板函数可像普通函数一样重载
// 定义一个名为 Mymax 的普通函数
int Mymax(int x, int y){return x >y ? x : y;
}
  1. 调用机制:当函数模板与普通函数发生重载时,优先匹配普通函数,当函数模板产生一个比普通函数更好的相匹配的模板函数,则调用该模板函数
Mymax(5, 10); // int Mymax(int, int) // 优先匹配
Mymax(5, 10.5); // int Mymax(int, int)  // 优先匹配(参数自动类型转换)
Mymax(5.5, 10); // int Mymax(int, int)  // 优先匹配(参数自动类型转换)
Mymax(5.5, 10.5); // T Mymax(T, T) // 模板函数double Mymax(double,double)最优
// 注: 以上4条调用在没有函数模板的情况下依旧匹配成功,均调用int Mymax(int, int)函数
  1. 若想略过普通函数直接调用模板函数,调用方式

函数名<[指定类型]>(实参列表); // []内为可省内容

Mymax<>(5, 10); // 模板函数 int
Mymax<>(5, 10.5); //error
Mymax<>(5.5, 10); // error : no matching function for call to 'Mymax(double, int)'
Mymax<>(5.5, 10.5); // 模板函数 double 
Mymax(5.5, 10.5); // 模板函数 int ,输出 10
扩展

普通函数支持类型自动转换匹配,模板函数必须严格匹配

templateT Mymax(T x, S y){return x >y ?  x : y;
}
Mymax(25, 26.3); // T Mymax(T, S) // cout :  26
Mymax(25.5, 26.3); // T Mymax(T, S) // cout : 26
Mymax(25, 26); // int Mymax(int, int)
// 这两个模板函数不可重载,只有函数类型不同,会产生ambiguous
templateS Mymax(T x, S y){return x >y ? x : y;
}
Mymax(25, 26.3); // S Mymax(T, S) // cout<< 26.3
Mymax(25.5, 26.3); // S Mymax(T, S) // cout<< 26.3

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:【C++语法】templates-创新互联
本文路径:http://bjjierui.cn/article/phoed.html

其他资讯