问答题
请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程包含一个源程序文件proj1.cpp。文件中将表示数组元素个数的常量Size定义为4,并用int类型对类模板进行了实例化。文件中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:1234注意:模板参数名用T。只修改注释“//ERROR********found********”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include<iostream>usingnamespacestd;//将数组元素个数Size定义为4//ERROR********found********constintSize;template<typenameT>classMyClass{public:MyClass(T*P){for(inti=0;i<Size;i++)array[i]=p[i];}voidPrint();private:Tarray[Size];};template<typenameT>//ERROR********found********voidMyClass::Print(){for(inti=0;i<Size;i++)cout<<array[i]<<'\t';}intmain(){intintArray[Size]={1,2,3,4};//ERROR********found********MyClass<double>obj(intArray);obj.Print(),cout<<end1;return0;}
【正确答案】正确答案:(1)eonstintSize=4; (2)voidMyClass::Print() (3)MyClassobj(intArray);
【答案解析】解析:(1)主要考查考生对const变量的掌握,因为const变量不能修改,所以在定义的同时必须初始化。 (2)主要考查考生对模板类的成员函数定义的掌握,因为MyClass类是模板类,所以在定义该函数时要加上模板标识符“”,即语句voidMyClass::Print( )。 (3)主要考查考生对模板类构造函数的调用的理解,从上一条语句intintArray[Size]={1,2,3,4};中可以知道intArray为int型,因此定义obj时要使用,即MyClassobj(intAtray);。