函数模板和类模板.pptVIP

  • 1
  • 0
  • 约7.28千字
  • 约 94页
  • 2025-12-30 发布于江西
  • 举报

程序设计实习;C++的基本类库;本讲内容;string类;string对象的初始化;可以将字符赋值给string对象;string的使用示例;string对象的赋值;string对象的字符访问;比较string;比较string;子串;string的特性;string的特性;string的特性;寻找string中的字符;寻找string中的字符;寻找string中的字符;寻找string中的字符;替换string中的字符;替换string中的字符;替换string中的字符;转换成C语言式char*字符串;转换成C语言式char*字符串;转换成C语言式char*字符串;字符串流处理;字符串流处理;字符串流处理;字符串流处理;字符串流处理;模板的基本概念;函数重载的办法

sort(…classA…){……}

sort(…classB…){……}

分别写两个同名的函数

由编译系统根据函数调用时实参的类型,确定实际执行哪个函数

函数模板

templateclassT

return-typesort(…T…)

由编译系统根据sort函数调用时实参的类型,自动生成相应的模板函数;输出全部数组元素的函数模板

templateclassT

voidprint(constTarray[],intsize){

inti;

for(i=0;isize;i++)coutarray[i];

return;

}

CStudentundergraduates[number1],graduates[number2];

stringtelephoneNubmers[nubmer3];

……

print(undergraduates,number1);

……

print(telephoneNumbers,number3);

……

print(graduates,number2);

……;voidprint(constCStudentarray[],intsize){

inti;

for(i=0;isize;i++)coutarray[i];

return;

}//编译到print(undergraduates,number1)时自动产生

voidprint(conststringarray[],intsize){

inti;

for(i=0;isize;i++)coutarray[i];

return;

}//编译到print(telephoneNumbers,number3)时自动产生

要能编译通过,要求对有适当的重载。;一个函数模板可以有多个类型参数

templateclassT1,classT2

voidprint(T1arg1,T2arg2)

{coutarg1“”arg2endl;return;}

函数模板的参数类型

可以用类型参数说明

也可以用基本数据类型、其他的类说明

templateclassT1,classT2

voidprint(T1arg1,T2arg2,strings,intk)

{coutarg1sarg2kendl;return;}

;函数模板的类型参数可以用于函数模板的

局部变量声明

templateclassT1,classT2

voidprint(T1arg1,T2arg2)

{

T1locVar=arg1;

coutlocVar“”arg2endl;

return;

};赋值兼容原则引起函数模板中类型参数的二义性

templateclassT

TmyFunction(Targ1,Targ2)

{coutarg1“”arg2“\n”;returnarg1;}

……

myFunction(5,7);//ok:replaceTwithint

myFunction(5.8,8.4);//ok:replaceTwithdouble

myFunction(5,8.4);//error:replaceTwithintordouble?二义性

可以在函数模板中使用多个类型参数,可以避免二义性

templateclassT1,classT2

T1myFunction(T1arg1,T2arg2)

{coutarg1“”arg2“\n”;returnarg1;}

……

myFunction(5,7);//ok:replaceT1andT2withint

myFunction(5.8,8.4);//ok:repl

文档评论(0)

1亿VIP精品文档

相关文档