应用题 1.  请使用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[]=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):fen (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 << "两个数据表只和:" <<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,并已经分配好了空间,接下来只要运用循环语句完成元素相加并进行赋值即可。