问题及代码:
/*copyright(c)2016.烟台大学计算机学院
* All rights reserved,
* 文件名称:text.Cpp
* 作者:吴敬超
* 完成日期:2016年4月23日
* 版本号:vc++6.0
*
* 问题描述: 人数不定的工资类
* 输入描述:
* 程序输出: 输出结果
*/
#include<iostream>
using namespace std;
class Salary
{
public:
Salary(int n);//n为职工人数,初始化完成空间的分配
~Salary(); //析构函数中释放初始化时分配空间
void input_salary();
void show_salary();
private:
double *salary;
int number;
};
Salary::Salary(int n)
{
number=n;
}
Salary::~Salary()
{
delete []salary;
}
void Salary::input_salary()
{
int i;
salary=new double[number];
for(i=0;i<number;i++)
{
cin>>*(salary+i);
}
}
void Salary::show_salary()
{
int i;
for(i=0;i<number;i++)
{
cout<<*(salary+i)<<" ";
}
}
int main()
{
Salary s(10);
s.input_salary();
s.show_salary();
return 0;
}
运行结果:
学习心得:
,一开始调试,程序总是崩溃,经过多次调试,终于找到了错误,错误在于编写代码时,在为指针数据成员开辟空间时指针变量名前的星号不用加上,只需要在定义指针变量名时加星号。后来经过我对课本的参考,调试正确。在执行析构函数时,需要用delete释放new分配的内存。