问答题
使用VC6打开考生文件夹下的工程test13_3。此工程包含一个test13_.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<iostream.h>
#include<stdlib.h>
class 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<size; i++)
{
*(buffer+i)=*(v.buffer+i);
}
}
int &Vector::elem(int ndx)
{
// ** 3 **
{
cout<<"error in index"<<endl;
exit(1);
}
return buffer[ndx];
}
void Vector::display()
{
for(int j=0;j<size;j++)
cout<<elem(i)<<endl;
}
void Vector::set()
{
for(int j=0;i<size;j++)
elem(j)=j+1;
}
Vector::~Vector()
{
// ** 4 **
}
void main()
{
Vector a(10);
Vector b(a);
a. set();
b. set();
a. display();
b. display();
}
【参考答案】
(1) size=s; buffer=new int[size];(2) size=v.size; bu......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)