欢迎来到天天文库
浏览记录
ID:10110865
大小:40.00 KB
页数:8页
时间:2018-05-26
《面向对象程序实验设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、面向对象程序(析构函数)实验设计——参考《现代c++程序设计》BarbaraJohnston著一、实验介绍:程序运行过程中,对象“诞生”于创建(及构造函数初始化变量)之时。正如对象会“诞生”一样,程序结束或对象不再被使用时,他也会“死亡”。程序结束或超出对象的生存范围时,对象会被销毁。在某些情况下,对象被销毁时需要由对象自己负责完成某些任务。这些任务可能包括关闭打开的文件或释放由new操作符分配的内存。二、实验原理:C++提供了析构函数,它在对象被销毁时自动调用。全局对象的析构函数在程序结束时才被调用。如果某个函数创建了一个局部对象,则函数退出时该对象就会被销毁。析构函数的形式与
2、构造函数的相似。在类名称前加上一个~字符,并且没有返回类型。一个类中只有一个析构函数。如果必要的话,程序员可以直接调用析构函数,然而多数情况下调用时自动完成的。三、实验目的:在main函数中,创建两个Gadget对象(red和blue)。GetData返回布尔值(good的值),这样main函数就知道对象中的数据是否合法。程序只输出合法数据。除函数sumData外,成员函数保存在另一个文件Ch9Gadgets.cpp中。一、实验内容:Gadgets程序。程序中声明了一个叫做Gadget的类。(Gadget的意思是无法归类或无法命名的小物品。)私有数据成员为4个整数和一个布尔类型的
3、标志:x、y、z以及他们之和sum,如果x、y、z都大于0,则标志的值为真。有两个私有函数Validate和SumData。公有成员函数包括:构造函数、GetData和WriteData。Gadget程序源代码如下:classGadget{Private:intx,y,z,sum;boolgood;//数据合法时good的值设为真voidValidate();//检查x,y,z的值是否大于0voidSumData(){sum=x+y+z;}public:Gadget();~Gadget();BoolGetData()VoidWriteData();};#endif//程序Gadg
4、ets//文件:Ch9Gadgets.cpp#include#includeGadget::Gadget(){cout<<“Gadget构造函数,把所有值设为0”;x=y=z=sum=0;good=false;}Gadget::~Gadget(){cout<<“Gadget析构函数。”“无事可做了,再见!”;}boolGadget::GetData(){Good=false;//开始设为falsecout<<“请输入Gadget的整型数据成员x,y,z=>”;cin>>x>>y>>z;Validate();/
5、/调用Validate检查数据的合法性If(good==true){SumData();//如果数据合法,则对它们求和}returngood;}VoidGadget::Validate(){//3个数都大于0时数据合法if(x>0&&y>0&&z>0)good=true;elsegood=false;}VoidGadget::WriteData(){cout<<“Gadget的数据:x=“<#includ
6、eIntmain(){Cout<<“Gadgets程序!”;Gadgetred,blue;//声明两个Gadget对象boolgoodred,goodblue;“cout<<“redGadget:”;//显示red中的信息,//然后调用red的GetData()方法Goodred=red.GetData();cout<<“blueGadget:”;//跟上面的red对象的操作相同goodblue=blue.GetData();if(goodred==true&&goodblue==true){cout<<“两个Gadget对
7、象中的数据都合法!”cout<<“redGadget:”;//调用red的WriteData()red.WriteData();cout<<“blueGadget:”;blue.WriteData();//调用blue的WriteData()}elseif(goodred&&!goodblue){cout<<“red的数据合法,但blue的数据不合法。”;cout<<“redGadget:”;red.WriteData();}elseif(!goodred&&go
此文档下载收益归作者所有