- 0
- 0
- 约3.55千字
- 约 71页
- 2021-08-05 发布于湖北
- 举报
程序设计实习;函数模板和类模板;信息科学技术学院《程序设计实习》 郭炜;函数模板;函数模板;函数模板;函数模板;函数模板中可以有不止一个类型参数。
?
template class T1, class T2
T2 print(T1 arg1, T2 arg2)
{
cout arg1 arg2endl;
return arg2;
}
;
求数组最大元素的MaxElement函数模板
template class T
T MaxElement(T a[], int size) //size是数组元素个数
{
T tmpMax = a[0];
for( int i = 1;i size;++i)
if( tmpMax a[i] )
tmpMax = a[i];
return tmpMax;
}
;
不通过参数实例化函数模板
#include iostream
using namespace std;
template class T
T Inc(T n)
{
return 1 + n;
}
int main()
{
cout Incdouble(4)/2; //输出
return 0;
}
;函数模板可以重载,只要它们的形参表或类型参数表不同即可。
?
templateclass T1, class T2
void print(T1 arg1, T2 arg2) {
cout arg1 arg2endl;
}
templateclass T
void print(T arg1, T arg2) {
cout arg1 arg2endl;
}
templateclass T,class T2
void print(T arg1, T arg2) {
cout arg1 arg2endl;
}
;?
在有多个函数和函数模板名字相同的情况下,编译器如下处理一条函数调用语句
先找参数完全匹配的普通函数(非由模板实例化而得的函数)。
再找参数完全匹配的模板函数。
3) 再找实参数经过自动类型转换后能够匹配的普通函数。
4) 上面的都找不到,则报错。
;*;匹配模板函数时,不进行类型自动转换
templateclass T
T myFunction( T arg1, T arg2)
{ coutarg1 arg2\n; return arg1;}
……
myFunction( 5, 7); //ok:replace T with int
myFunction( 5.8, 8.4); //ok: replace T with double
myFunction( 5, 8.4); //error,no matching function for call to myFunction(int, double) ;#include iostream
using namespace std;
templateclass T,class Pred
void Map(T s, T e, T x, Pred op)
{
for(; s != e; ++s,++x) {
*x = op(*s);
}
}
int Cube(int x) { return x * x * x; }
double Square(double x) { return x * x; }
;int a[5] = {1,2,3,4,5}, b[5];
double d[5] = { 1.1,2.1,3.1,4.1,5.1} , c[5];
int main() {
Map(a,a+5,b,Square);
for(int i = 0;i 5; ++i) cout b[i] ,;
cout endl;
Map(a,a+5,b,Cube);
for(int i = 0;i 5; ++i) cout b[i] ,;
cout endl;
Map(d,d+5,c,Square);
for(int i = 0;i 5; ++i) cout c[i] ,;
cout endl;
return 0; };信息科学技术学院《程序设计实习》 郭炜;类模板 – 问题的提出;这些数组类,除了元素的类型不同之外,其他的完全相同
类模板:在定义类的时候给它一个/多个类型参数。在调用类模板时,由编译系统根据实参的数据类型自动产生相应的模板类。;类模板的定义;类模板的定义;类模板示例: Pair类模板
template class T1,class T2
class Pair
{
public:
T1 key; //关键字
T2 value;
您可能关注的文档
- 《成本计算与管理》(舒文存)(第二版) 成本计算与管理PPT(舒文存)新版 成本计算与管理(项目七) .ppt
- 《成本计算与管理》(舒文存)(第二版) 成本计算与管理PPT(舒文存)新版 成本计算与管理(项目十二) .ppt
- 《成本计算与管理》(舒文存)ppt 项目九.ppt
- 《成本计算与管理》(舒文存)新版 成本计算与管理(项目七) .ppt
- 《成本计算与管理》配套课件(高教版) 项目二.ppt
- 《成本计算与管理》配套课件(高教版) 项目四.ppt
- 《城轨行车组织》课件 单元八 突发事件时的行车组织.ppt
- 《城轨行车组织》课件 单元二 城轨车辆与驾驶.ppt
- 《城轨行车组织》课件 单元九 调车作业组织.ppt
- 《城轨行车组织》课件 单元六 正常情况下的行车组织.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)