请打开考生文件夹下的解决方案文件proj1,此工程包含一个源程序文件proj1.cpp。文件中将表示数组元素个数的常量Size定义为4,并用int类型对类模板进行了实例化。文件中位于每个注释“//ERROR ****found****”之后的一行语句存在

admin2020-04-07  36

问题 请打开考生文件夹下的解决方案文件proj1,此工程包含一个源程序文件proj1.cpp。文件中将表示数组元素个数的常量Size定义为4,并用int类型对类模板进行了实例化。文件中位于每个注释“//ERROR  ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
    1    2    3    4
    注意:模板参数名用T。只修改注释“//ERROR  ********found********”的下—行语句,不要改动程序中的其他内容。
    //proj1.cpp
    #include<iostream>
    using namespace std;
    //将数组元素个数Size定义为4
    //ERROR  *******found*******
    const int Size;
    template<typename T>
    class MyClass
    {
    public:
      MyClass(T*p)
      {
      for(int i=0;i<Size;i++)
        array=p
      }
      void Print();
    private:
      T array[Size];
    };

    template<typename T>
    //ERROR  ******* found *******
    void MyClass::Print()
    {
      for(int i=0;i<Size;i++)
        cout<<array<<’\t’;
    }

    int main()
    {
      int intArray[Size]={1,2,3,4};
    //ERROR  ******* found *******
       MyClass<double>obj ( intArray);
       obj.Print();
       cout<<endl;
       return 0;
    }

选项

答案(1)const int size=4; (2)void MyClass<T>::Print() (3)MyClass<int>obj(intArray);

解析 (1)主要考查考生对const变量的掌握,因为const变量不能修改,所以在定义的同时必须初始化。
    (2)主要考查考生对模板类的成员函数定义的掌握,因为MyClass类是模板类,所以在定义该函数时要加上模板标识符“<T>”,即语句void MyClass<T>::Print()。
    (3)主要考查考生对模板类构造函数的调用的理解,从上一条语句int intArray[Size]={1,2,3,4};中可以知道intArray为int型,因此定义obj时要使用<int>,即MyClass<int>obj(intArray);。
转载请注明原文地址:https://kaotiyun.com/show/1u8p777K
0

最新回复(0)