问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:两个数据表:1,2,3,4,5,63,4,5,6,7,8两个数据表之和:4,6,8,20,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[]=NULL);DataList(DataList &data);int length()const{return len;}double getElement(int i)const{return d[i];}DataList operator+(const DataList& list)const;//两个数据表求和void show()const;//显示数据表};void writeToFile(char*,const DataList&);//main.cpp#include"DataList.h"DataList::DataList(int len,double data[]):len(len){d=new double[len];for(int i=0;i<len;i++)d[i]=(data==NULL?0.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)const{//两个数据表求和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<<"两个数据表之和."<<end!;(list1+list2).show();writeToFile(" ",list1+list2);return0;}
【正确答案】正确答案:for(int i=0;i<len;++i)//遍历对象list中的数组和d数组,把对应的值相加后放到数组dd中。 dd[i]=d[i]+list.d[i];
【答案解析】解析:本题考查DataList类,其中涉及构造函数、动态数组、复制构造函数、const函数和运算符重载。 主要考查考生对重载运算符的掌握,题目要求对两个数据表求和。程序已经定义了动态数组dd,并已经分配好了空间,接下来只要运用循环语句完成元素相加并进行赋值即可。