问题 问答题

综合应用题使用VC6打开考生文件夹下的工程test13_3。此工程包含一个test13_3.cpp,其中定义了类Vector,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)完成构造函数的定义,把数据成员size初始化为参数s的值,数据成员buffer指向动态申请的int型size大小的空间。请在注释"// ** 1 ** "之后添加适当的语句。(2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释"// ** 2 ** "之后添加适当的语句。(3)完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,注意如果ndx超界,请输出"error in index"。请在注释"// ** 3 ** "之后添加适当的语句。(4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer指向的空间。请在注释"// ** 4 ** "之后添加适当的语句。输出结果如下:1234567891012345678910dd注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。源程序文件test13_3清单如下:#include #includeclass Vector{public: Vector(int s=100); Vector(Vector &v); int &elem(int ndx); void display(); void set(); ~Vector();protected: int size; int *buffer;};Vector::Vector(int s){// ** 1 **}Vector::Vector(Vector &v){// ** 2 ** for(int i=0; i

答案

参考答案:(1) size=s; buffer=new int[size];(2) size=v.size; buffer=new int[size];(3) if (ndx<0||ndx>=size)(4) cout<<"d"<

解析:本题主要考查考生对于类的构造函数与成员函数定义的掌握,注意(2)中赋值的应用,为了防止重复删除,不能直接将指针赋值,必须使用动态申请new建立一块新的空间,并且将原来对象的成员全部复制到新的空间中;(4)中对动态一维数组空间删除的时候,应该使用delete关键字,并且不管原数组大小是多少,一律只写一对中括号"[]"加上变量名。