第九周项目三-人数不定的工资类
2016-05-26 20:01
211 查看
问题及代码:
运行结果:
学习心得:
开始编写程序时我并没有些复制构造函数,看到老师给出了复制和构造函数并不是很理解为什么,因为程序的测试用例中并没有用到。后来才知道复制构造函数能使程序更加完整,避免一些可能的错误,特别是当成员函数有指针时,要特别注意构造和复制构造函数的深复制问题。
/* *烟台大学计算机学院 *文件名称:xiangmu2.cpp *作 者:闫安 *完成日期:2016年5月8日 *版 本 号:codeblocks 16.01 * *问题描述:设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和 number个职工的工资salary,要求输入职工工资并逐个输出。 *程序输入:职工工资 *程序输出:职工工资 */ #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; } void Salary::input_salary() { cout<<"请输入职工的工资:"; for(int i=0;i<number;i++) cin>>*(salary+i); } void Salary::show_salary() { cout<<"职工工资清单:"; for(int i=0;i<number;i++) cout<<*(salary+i)<<" "; cout<<endl; } //下面是测试函数 int main() { Salary s(10); s.input_salary(); s.show_salary(); return 0; }
运行结果:
学习心得:
开始编写程序时我并没有些复制构造函数,看到老师给出了复制和构造函数并不是很理解为什么,因为程序的测试用例中并没有用到。后来才知道复制构造函数能使程序更加完整,避免一些可能的错误,特别是当成员函数有指针时,要特别注意构造和复制构造函数的深复制问题。
相关文章推荐
- 1-9 的数字,每个数字只能出现一次组成9位整数,其中第1位能被1整除 前 2 位能被 2 整除 前 3 位能被 3 整除 依次类推......... 前 9 位能被 9 整除
- <AOP:aspectj-autoproxy/>
- PAT 1010 Radix
- 玩转js--炫酷抽奖轮盘
- mybatis系列-07-输出映射
- 堆排序
- 谈谈黑客攻防技术的成长规律(aullik5)
- PAT 1010 Radix
- float,double和decimal类型
- POJ 2888 Magic Bracelet(burnside引理+矩阵)
- 【运算符重载-数组类运算的实现】
- 【运算符重载-数组类运算的实现】
- 【运算符重载-数组类运算的实现】
- 【运算符重载-数组类运算的实现】
- 【运算符重载-数组类运算的实现】
- 【css】向页面动态插入css
- Android Widget设计
- Python使用UUID库生成唯一ID
- RF内置库-----内置库的学习过程总结
- 博客推荐