定义一个类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."。
若干个整数。个数大于2个。
第1个N表示后面输入的元素个数。之后有N个整数。它们用于设置main函数中DataArray的对象datas的数组元素值。
最后一个整数用于设置main函数中testP指向的对象的值。
见样例~
1
#include <iostream> using namespace std; class Data { private: int data; public: Data() { data = 0; cout << "Data's default constructor." << endl; } Data(int _data) { data = _data; cout << "Data "<<data<<" is created." << endl; } int getValue() { return data; } void setValue(int _data) { data = _data; } ~Data() { cout << "Data " << data << " is erased." << endl; } }; class DataArray { private: Data *data; int num; public: DataArray() { cout << "DataArray's default constructor." << endl; } DataArray(int _num,int *d) { num =_num; data = new Data[num]; for(int i = 0;i < num;i++) { data[i].setValue(d[i]); } cout << "DataArray's constructor." << endl; } int getSum() { int sum = 0; for (int i = 0;i < num;i++) { sum += data[i].getValue(); } return sum; } ~DataArray() { delete [] data; //申请的空间记得delete!!!!!! 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; }