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

改错题
  使用VC6打开考生文件夹下的工程kt17_1,此工程包含一个源程序文件kt17_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:
  0149162536496481
  源程序文件kt17_1.cpp清单如下:
  #include<iostream.h>
  template<classT,intN=100>classVector
  { Tvec[N];
   public:
   voidset(intpos,Tval);
   Tget(intpos);
   /*****************found*****************/ }
  template<classT,intN>voidVector<T,N>::set(intpos,Tval)
  { vec[pos]=val; }
  /*****************found*****************/
  template<classT,intN>Vector<T,N>::get(intpos)
  { returnvec[pos]; }
  intmain()
  { Vector<double,10>v;
   inti=0;
   doubled=0.0;
   for(i=0;i<10;i++)
   v.set(i,double(i*i));
   for(i=0;i<10;i++)
   cout<<v.get(i)<<"";
   cout<<endl;
   /*****************found*****************/ }
  【参考答案】
  (1)在“}”后添加分号。
  (2)将template <class T, int N> Vector<T, N>::get(int pos)
   改为:template <class T, int N> T Vector<T, N>::get(int pos)
  (3)将缺少返回值
   改为:加入return 0;
  【试题解析】
  (1)主要考查对于类定义的理解,即使使用了类模板,在类定义的结尾仍然需要使用分号,这是C++的规定;
  (2)主要考查是模板类的定义,template是关键字,在<>中间是类型的定义,题目中Vector是一个类的名称,前面应该有该模板的名称,即T,这样才是完整的定义;
  (3)主要考查对函数返回值的掌握,任何返回值类型不为int型的函数最后都必须使用returen语句返回对应类型的值,就算是main函数也不例外。
就业数据资源平台