就业数据资源平台
当前位置:首页 > C++语言程序设计
2012年计算机二级C++练习题:改错题7

改错题
  使用VC6打开考生文件夹下的工程kt12_1,此工程包含一个源程序文件kt12_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:
  100
  源程序文件kt12_1.cpp清单如下:
  #include<iostream.h>
  template<classT>
  classpair
  { Tvalue1,value2;
   public:
   pair(Tfirst,Tsecond)
   {value1=first;value2=second;}
   /*****************found*****************/
   chargetmax(); };
  /*****************found*****************/
  Tpair<T>::getmax()
  { Tretval;
   /*****************found*****************/
   retval=value1>value2??value1:value2;
   returnretval; }
  voidmain()
  { pair<int>myobject(100,75);
   cout<<myobject.getmax()<<endl; }
【参考答案】
  (1)将char getmax ();改为:T getmax ();
  (2)缺少模板的声明,应改为:template <class T>
  (3)将retval = value1>value2?? value1 : value2;
   改为:retval = value1>value2? value1 : value2;
【试题解析】
  (1)主要考查对模板使用的理解,该函数属于模板类定义的一部分,对于返回值类型,应该使用模板类名称T,这样编译的时候才能被接受;
  (2)主要考查是模板的使用,前面的模板类已经声明完成了,在类的外面定义类的成员函数时仍然需要使用模板的声明,这样在后面的函数定义体中才能使用模板类;
  (3)主要考查对“表达式1? 表达式2 : 表达式3”语句的掌握,这个语句是一个复合语句,先计算第一个表达式,如果为真则整个式子值为表达式2的值,否则为表达式3的值,题目中错误的使用了两个问号。
就业数据资源平台