实验三构造函数和析构函数Word格式.docx
《实验三构造函数和析构函数Word格式.docx》由会员分享,可在线阅读,更多相关《实验三构造函数和析构函数Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
Aa(5);
a.show();
a.set(10);
return0;
//结果:
//5
//10
(2)
usingnamespacestd;
classX
{private:
inta=0;
//私有成员不允许赋初值
int&
b;
constintc;
voidsetA(inti){a=i;
X(inti){a=i;
public:
intX(){a=b=0;
}//构造函数无返回值
X(inti,intj,intk){a=i;
b=j;
c=k;
}
setC(intk)const{c=c+k;
}//成员函数没有标明返回值类型.
intmain()
{
Xx1;
Xx2
(2);
//私有成员函数不可被外界访问.
Xx3(1,2,3);
x1.setA(3);
return0;
改正后的程序:
#include<
classX
inta;
intb;
intc;
}X(inti){a=i;
X(){a=b=0;
X(inti,intj,intk)
{a=i;
voidsetC(intk){c=c+k;
Xx3(1,2,3);
2(请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结
果是否正确。
classtest{
test();
intgetint(){returnnum;
floatgetfloat(){returnfl;
~test();
intnum;
floatfl;
test:
:
test()
cout<
"
Initalizingdefault"
<
endl;
num=0;
fl=0.0;
~test()
Destructorisactive"
intmain()
testarray[2];
array[1].getint()<
array[1].getfloat()<
//Initalizingdefault//Initalizingdefault//00
//Destructorisactive//Destructorisactive
#include<
string>
X(intx1,char*x2,floatx3):
a(x1),c(x3)
{b=newchar[sizeof(x2)+1];
strcpy(b,x2);
X():
a(0),b("
X:
X()"
),c(10){}
X(intx1,char*x2="
X(....)"
intx3=10):
a(x1),b(x2),c(x3){}
X(constX&
other)
{a=other.a;
b="
X(constX&
other)"
;
c=other.c;
voidprint()
{cout<
"
a="
a<
\t"
b<
c="
c<
private:
char*b;
floatc;
X*A=newX(4,"
X(int,char,float)"
32);
XB,C(10),D(B);
A->
print();
B.print();
C.print();
D.print();
结果;
//a=4b=X:
X(int,char,float)c=32
//a=0b=X:
X()c=10
//a=10b=X:
X(….)c=10
other)c=10
3(在实验二第2题工资管理类Salary中定义构造函数初始化工资数据的各分项数据。
该类的形式如下:
classSalary
Salary(){初始化工资数据的各分项数据为0}
Salary(……){初始化工资数据的各分项数据}
voidsetXX(doublef){XX=f;
doublegetXX(){returnXX;
doubleRealSalary(){……}//计算实发工资
……
Private:
BoubleWage,Subsidy,Rent,WaterFee,ElecFee;
其中,成员函数setXX()用于设置工资的各分项数据,成员函数getXX()用于获取工资的各分项数据,XX代表Wage、Subsidy等数据成员,如Wage对应的成员函数则为setWage()和getWage()。
实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee编程完善该类的设计,并在主函数中测试该类的各成员函数。
//编程完善该类的设计,并在主函数中测试该类的各成员函数。
classsalary
salary();
salary(doublea,doubleb,doublec,doubled,doublee)
{wage=a;
subsidy=b;
rent=c;
waterfee=d;
elecfee=e;
voidsetwage(doublef){wage=f;
voidsetsubsidy(doublef){subsidy=f;
voidsetrent(doublef){rent=f;
voidsetwaterfee(doublef){waterfee=f;
voidsetelecfree(doublef){elecfee=f;
doublegetwage(){returnwage;
doublegetsubsidy(){returnsubsidy;
doublegetrent(){returnrent;
doublegetwaterfee(){returnwaterfee;
}doublegetelecfee(){returnelecfee;
voidRealSalary(){
cout<
最后实发的工资是:
(wage+subsidy-rent-waterfee-elecfee)<
}//计算实发工资
doublewage;
doublesubsidy;
doublerent;
doublewaterfee;
doubleelecfee;
classsalarywang(4000.00,55.00,332.00,324.00,100.00);
wang.RealSalary();
4(在实验二第3题中对职工类Employee定义构造函数实现以下功能:
创建职工对象时,
可以按不同方式指定职工信息。
5(在实验二第4题中对三角形类定义构造函数完成三角形的初始化。
cmath>
classtriangle
{public:
triangle(doublei,doublej,doublek){a=i;
b=j;
c=k;
voidarea();
voidzhouchang();
voidintputxinxi();
private:
doublea;
doubleb;
doublec;
doubleAREA;
doubleZHOUCHANG;
voidtriangle:
area(){AREA=sqrt(4*a*a*b*b-(a*a+b*b-c*c)*(a*a+b*b-c*c))/4;
zhouchang(){ZHOUCHANG=a+b+c;
}voidtriangle:
intputxinxi(){cout<
三角形的面积是:
AREA<
endl<
三角形的周长是:
ZHOUCHANG<
{classtriangleex(6.0,8.0,10.0);
ex.area();
ex.zhouchang();
ex.intputxinxi();
6(设计一个时钟类Clock。
数据成员包括hour(小时)、minute(分钟)、second(秒)。
要求用成员函数实现以下功能:
(1)创建具有指定时钟(小时、分钟、秒)的Clock对象,默认时钟为00:
00:
00。
(2)动态地设置时、分、秒。
(3)在时间类的析构函数中输出“Goodbye!
”。
(4)定义拷贝构造函数并调用。
(5)在屏幕上按“时:
分:
秒”的格式显示时钟。
(6)在主函数中测试该类。
classClock
inthour;
intmin;
intsec;
Clock();
//构造函数
voidSetHour(inthour);
//设置时
voidSetMin(intmin);
//设置分
voidSetSec(intsec);
//设置秒
voidPrintTime();
//打印时间
voidClock:
SetHour(inthour)
if(hour>
=0&
&
hour<
24)
this->
hour=hour;
elsecout<
小时不正确"
SetMin(intmin)
if(min>
min<
60)
min=min;
分钟不正确"
SetSec(intsec)
if(sec>
sec<
sec=sec;
秒数不正确"
PrintTime(){
Clock:
Clock()
hour=0;
min=0;
sec=0;
Clockt;
t.PrintTime();
输入小时"
cin>
>
hour;
//
输入分钟"
min;
输入秒数"
sec;
t.SetHour(hour);
t.SetMin(min);
t.SetSec(sec);