问题描述及代码:
/*
*copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:hellow.cpp
*作者:田甜
*完成日期:2016年5月12日
*版本号:v1.0
*
*问题描述:设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出。
*输入描述:n名员工的工资
*程序输出:按类内函数的要求输出
*/
#include <iostream>
using namespace std;
class Salary
{
public:
Salary(int n);
Salary(const Salary&);
~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<<"请输入"<<number<<"名教职工工资"<<endl;
for(int i=0;i<number;i++)
cin>>salary[i];
}
void Salary::show_salary()
{
cout<<"教职工工资清单:"<<endl;
for(int i=0;i<number;i++)
cout<<salary[i]<<" ";
cout<<endl;
}
int main()
{
Salary s1(10);
s1.input_salary();
Salary s2(s1);
s1.show_salary();
s2.show_salary();
return 0;
}
运行结果:
心得体会:
在设计赋值构造函数的时候要像构造函数一样再分配新的空间。
这种动态分配内存的方式可以根据员工个数分配储存工资的内存的大小,有效地节省了空间。