使用VC6打开考生文件夹下的工程test31_1,此工程包含一个源程序文件test31_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
max(1,2)=2
max(1,4)=4
源程序文件test31_1.cpp清单如下:
#include <iostream.h>
/***************** found *****************/
template class T
T GetMax (T a, T b)
T result;
result = (a>b)a:b;
return result;
void main()
int i=1, j=2;
double k=4;
cout<<"max("<<i<<","<<j<<")="<<GetMax(i,j)<<end1;
/***************** found *****************/
cout<<"max("<<i<<","<<k<<")="<<GetMax(i,k)<<end1;
/***************** found *****************/
return 0;
参考答案:
(1)
错误:template class T
正确:template<class T>
(2) 错误:cout<<"max("<<i<<","<<k<<")="<<GetMax(i,k)<<end1;
正确:cout<<"max("<<i<<","<<k<<")="<<GetMax<double>(i,k)<<end1;
(3) 错误:return 0;
正确:应将"return 0;”删除
解析:
(1)函数模板的格式是template<模板形参表声明>函数声明,所以class T应该由“<>”括起来;
(2)变量i为int型,而变量k为double型,编译系统找不到相应的函数,所以需要显式的给出模板实参,强制生成对特定实例的调用;
(3)由void main()可看出main函数不需要返回值,所以必须把“return 0;”删除。