Description
定义一个类Data,只有一个int类型的属性和如下方法:
1. 缺省构造函数,将属性初始化为0,并输出"Data's default constructor."。
2. 析构函数,输出:"Data # is erased.",其中“#”是属性值。
4. int getValue()——获得属性值。
5. void setValue(int)——设置属性值。
定义一个由Data的对象组成的数组类DataArray,该类包括1个int类型的属性和一个Data*类型的属性,分别为数组中元素的个数、所有的元素。定义如下方法:
2. 构造函数——参数格式请参考main函数的调用方法给出,输出:"DataArray's constructor."。
3. int getSum()——求所有Data对象属性值的和。
4. 析构函数——输出一行"DataArray's deconstructor."。
Input
若干个整数。个数大于2个。
第1个N表示后面输入的元素个数。之后有N个整数。它们用于设置main函数中DataArray的对象datas的数组元素值。
最后一个整数用于设置main函数中testP指向的对象的值。
Output
见样例~
Sample Input
Sample Output
HINT
Append Code
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;
}
using namespace std;
class Data
{
private:
int d;
public:
Data()
{
d=0;
cout<<"Data's default constructor."<<endl;
}
~Data()
{
cout<<"Data "<<d<<" is erased."<<endl;
}
int getValue()
{
return d;
}
void setValue(int a)
{
d=a;
}
};
class DataArray
{
private:
int da;
Data *t;
public:
DataArray(int n,int *tmp)
{da=n;
int i;
t=new Data[n];
for(i=0; i<n; i++)
{
t[i].setValue(tmp[i]);
}
cout<<"DataArray's constructor."<<endl;
}
int getSum()
{
int i,sum=0;
for(i=0; i<da; i++)
{
sum+=t[i].getValue();
}
return sum;
}
~DataArray()
{
delete []t;
cout<<"DataArray's deconstructor."<<endl;
}
};
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;
}