请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:
两个数据表:
1,2,3,4,5,6
3,4,5,6,7,8
两个数据表之和:
4,6,8,10,12,14
要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//DataList.h
#include <iostream>
using namespace std;
class Datalist //数据表类
int len;
double*d;
public:
DataList(int len,double data[]=
DataList(Datalist &data);
int length () constreturn len;
double getElement(int i)const return d[i];
Datalist operator+(const DataList&list)const; //两个数据表求和
void show () const; //显示数据表void writeToFile(char*,constDataList&);
//main.cpp
#include"Datalist.h"
DataList::DataList(int len,doubledata[]):len(len)
d=new double[len];
for(int i=0;i<len;i++)
d[i]=(data==NULL0.0:data[i]);
DataList::Datalist(Datalist &data):len(data.len)
d=new double[len];
for(int i=0;i<len;i++)
d[i]=data.d[i];
DataList DataList::operator+(const
Datalist& list)constt//两个数据表求和double*dd=new double [list.length()];
//********333********
//********666********
return DataList(list.length(),dd);
void DataList::show()const(//显示数据表
for(int i=0;i<len-1;i++)
cout<<d[i]<<",";
cout<<d[len-1]<<endl;
int main()
double s1[]=1,2,3,4,5,6;
double s2[]=3,4,5,6,7,8;
DataList list1(6,s1),list2(6,s2); //定义两个数据表对象
cout<<"两个数据表:"<<endl;
list1.show();
list2.show();
cout<<endl<<"两个数据表之和:"<<endl;
(list1+list2).show();
writeToFile(" ",list1+list2);
return 0;
参考答案:for(int i=0;i<len;++i) //遍历对象list中的数组和d数组,把对应的值相加后放到数组dd中。
dd[i]=d[i]+list.d[i];
解析: 本题考查DataList类,其中涉及构造函数、动态数组、复制构造函数、const函数和运算符重载。
主要考查考生对重载运算符的掌握,题目要求对两个数据表求和。程序已经定义了动态数组dd,并已经分配好了空间,接下来只要运用循环语句完成元素相加并进行赋值即可。