SDUST 第二次实验

/*第二次实验:
D题:一直WA,原来是死在ctrl C 落了一个点~~~~~~~哭死
E题:还是需要好好深究一下的,主要是它开了一个数组,这个数组怎么弄
     主要是new 和 delete 的用法,一开始在Dataarray 里面,定义了一个指针,这个指针并未指向任何东西,同时按照题目要求
     还要有数组对象的构造函数,并且数组对象的构造是在array之前(其实这样说不准确,是大类构造时遇见了小类,然后就跑去构造小类了;
     D = new Data[m];
     delete []D;
     一定要好好看看人家给的源码啊!!!!!
*/






#include<iostream>
using namespace std;

class Data
{
public:
    Data() :x_(0) {cout <<"Data's default constructor." << endl;}
    ~Data() {cout << "Data "<< x_ <<" is erased." << endl;}
    int getValue()
    {
        return x_;
    }
    void setValue(int x)
    {
        x_ = x;
    }
private:
    int x_;
};

class DataArray
{
public:
    DataArray(int n, int *m):n_(n)
    {
        y_ = new Data[n];
        for(int i = 0; i < n_; i++)
        {
            y_[i].setValue(m[i]);
        }
        cout << "DataArray's constructor." << endl;
    }
    int getSum()
    {
        int sum = 0;
        for(int i = 0; i < n_; i++)
        {
            sum += y_[i].getValue();
        }
        return sum;
    }
    ~DataArray()
    {
        delete []y_;
        cout <<"DataArray's deconstructor." <<endl;
    }
private:
    int n_;
    Data* y_;
};


int main()
{
    int i, n;
    Data test, *testP; // 创建这个指针的时候不调用构造函数,因为他只是一个指针并未有实际的作用把
    cin>>n;
    int tmp[n];
    for (i = 0; i < n; i++)
        cin>>tmp[i];
    DataArray datas(n, tmp);
    cout<<"Sum is "<<datas.getSum()<<endl;
    testP = new Data;   // 这个时候才调用了构造函数。
    cin>>n;
    testP->setValue(n);
    delete testP;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值