}
};
intmain()
{
Personp1;
p1.input();
p1.output();
return0;
}
运行结果:
4.设计一个计算薪水的类Payroll,它的数据成员包括:
单位小时的工资、已经工作的小时数、本周应付工资数。
在主函数定义一个具有10个元素的对象数组(代表10个雇员)(可以定义普通对象数组,也可以定义堆对象数组)。
程序询问每个雇员本周已经工作的小时数,然后显示应得的工资。
要求:
输入有效性检验:
每个雇员每周工作的小时数不能大于60,同时也不能为负数。
程序:
#include
#include
classPayroll
{
private:
doublemoney;
doubletotal;
public:
inttime;
intGetTime()
{
do
{
printf("inputtime:
");
scanf("%d",&time);
}
while(time<0&&time>60);
money=100;
return0;
}
intGetTotalMoney()
{
return(total=time*money);
}
voidPrint()
{
printf("total:
%lf\n",total);
}
};
main()
{
Payrollp[10];
p[0].GetTime();
p[0].GetTotalMoney();
p[0].Print();
}
运行结果:
四、实验体会
对多文件有了更深了解,能够熟练的掌握多文件的使用方法。
学习了C++的构造函数,以及拷贝构造函数,接触友元组合类等新知识,需要课后多加练习。
实验项目名称:
静态成员与友元实验学时:
3
同组学生姓名:
无实验地点:
A107
实验日期:
10.09实验成绩:
批改教师:
吴刚批改时间:
一、实验目的和要求
1.掌握类中静态成员的定义的方法。
2.掌握静态数据成员初始化的方法。
3.掌握静态数据成员和数据函数成员的访问和使用方法。
4.掌握友元函数的定义和使用方法。
5.了解友元类的使用方法。
二、实验设备和环境
1.计算机每人一台。
2.安装WindowsXP或者以上版本操作系统。
3.安装VisualC++6.0或者VisualC++2005以上版本。
三、实验内容及步骤
1.任意输入10个数,计算器总和及平均值。
设计程序测试该功能(要求用类、静态友员实现)。
程序:
#include
#include
usingnamespacestd;
classnumber
{
intNo;
intfigure;
staticdoublesum;
staticintsumpeople;
public:
number(intn,intifigure)
{
No=n;
figure=ifigure;
sum+=figure;
sumpeople++;
}
staticintSum()
{
returnsum;
}
staticdoubleAverage()
{
returnsum/sumpeople;
}
};
intnumber:
:
sumpeople=0;
doublenumber:
:
sum=0;
voidmain()
{
inti,j;
cout<<"Thetennumberis:
"<for(i=1;i<=10;i++)
{
cin>>j;
number(i,j);
}
cout<<"Thesumis:
"<:
Sum()<cout<<"Theaverageis:
"<:
Average()<}
运行结果:
2.求两点之间的距离(要求定义点Point类,并用友员函数实现)。
程序:
#include
#include
usingnamespacestd;
classPoint
{
doublex,y;
public:
Point(doublem,doublen):
x(m),y(n){}
frienddoubleDistance(Point&px,Point&py);
};
doubleDistance(Point&px,Point&py)
{
doubled;
d=sqrt((px.x-py.x)*(px.x-py.x)+(px.y-py.y)*(px.y-py.y));
returnd;
}
voidmain()
{
Pointp1,p2;
inta1,b1,a2,b2;
cin>>a1>>b1>>a2>>b2;
p1=Point(a1,b1);
p2=Point(a2,b2);
cout<<"thedistanceis"<}
运行结果:
3.定义一个经理类Manager,其成员数据包括编号id,姓名name和年龄age,均声明为private访问属性。
再定义一个员工类Employee,其成员数据及访问属性与经理类相同。
将Manager类声明为Employee类的友员函数,并在Manager类中定义一个函数访问Employee类的私有数据成员并进行输出。
程序:
#include
#include
usingnamespacestd;
classEmployee
{
friendclassManager;
private:
intid;
char*n;
intage;
public:
Employee()
{
id=1;
n="abc";
age=20;
}
};
classManager
{
private:
intid;
charname[10];
intage;
public:
Manager()
{
Employeee;
}
voidPrint(Employee&e)
{
cout<cout<cout<}
};
voidmain()
{
Employeee;
Managerm;
m.Print(e);
syste