/*第二次实验:
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;
}
SDUST 第二次实验
最新推荐文章于 2022-01-12 20:46:30 发布