- 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)