标签:
设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出。class Salary { public: Salary(int n); //n为职工人数,初始化时完成空间的分配 ~Salary(); //析构函数中释放初始化时分配的空间 void input_salary(); void show_salary(); private: double *salary; int number; }; //下面定义类的成员函数 …… //下面是测试函数 int main() { Salary s(10); s.input_salary(); s.show_salary(); return 0; }
参考解答(重点的有注释):
/* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 4 月 15 日 * 版 本 号:v1.0 */ #include <iostream> using namespace std; class Salary { public: Salary(int n); //n为职工人数,初始化时完成空间的分配 Salary(const Salary &s); //建立复制构造函数 ~Salary(); //析构函数中释放初始化时分配的空间 void input_salary(); void show_salary(); private: double *salary; int number; }; Salary::Salary(int n) { number=n; salary=new double[number]; //更据人数的大小来确定分配的空间的大小。 } Salary::Salary(const Salary &s) { number=s.number; salary=new double[number]; for(int i=0;i<number;i++) { *(salary+i)=*(s.salary+i); } } Salary::~Salary() { delete []salary; //这一步是必须要有的,在析构函数中释放用new分配的空间 } void Salary::input_salary() { int i; cout<<"请输入"<<number<<"名职工的工资:"<<endl; for(i=0;i<number;i++) { cin>>*(salary+i); } return; } void Salary::show_salary() { cout<<"职工工资清单:"; for(int i=0;i<number;i++) { cout<<*(salary+i)<<" "; } cout<<endl; return; } int main() { Salary s(10); s.input_salary(); s.show_salary(); return 0; }
心得体会:灵活运用复制函数(记得要用new分配一个恰好的空间,函数结束后在用析构函数delete释放掉我们所分配的空间。),有时会很便捷的。继续加油吧!
标签:
原文地址:http://blog.csdn.net/nufangdongde/article/details/45054193