实验7 构造函数和析构函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验7 构造函数和析构函数
一、实验目的:
●掌握C++中类和对象的使用方法;
●熟悉构造函数和析构函数的概念;
●掌握构造函数和析构函数的定义方法;
●熟悉拷贝构造函数的概念和定义方法。
二、实验内容
1、请按要求运行下列程序,并回答相关问题,从中体会构造函数的作用:
#include
using namespace std;
class Time
{
private:
int hour, minute, second;
public:
void disp();
};
void Time::disp()
{
cout< } int main() { Time time; time.disp(); } 问题: (1)查看程序的运行结果,你能发现其中的问题吗? (2)给类增加一个无参数的构造函数,再次运行程序。程序结果有无变化?从中你能体会构造函数具有什么作用? (3)在类中增加如下函数定义,在运行程序观察运行结果有什么变化? Time::Time() //定义构造函数 { hour=0; minute=0; second=0; } (4)问题:请用参数列表初始化数据成员的方式改写构造函数,查看程序运行结果有无不同? 2、阅读、运行下列程序,并回答相关问题,进一步熟悉构造函数、析构函数的定义、调用,清楚对象构造、析构的顺序。 #include using namespace std; class Test { private: int x; public: Test() { cout<<"对象地址: "< x=0; } ~Test() { cout<<"对象地址: "< } void print() { cout<<"数据成员: x="< } }; int main() { Test obj1,obj2; //创建对象时,自动调用构造函数 obj1.print(); obj2.print(); } 问题: (1)析构函数有什么作用?在书写时,与构造函数有什么相同点和不同点?(2构造函数、析构函数的调用顺序是怎么样的? 3、定义一个Date类满足如下要求: 数据成员:年、月、日 成员函数: 1、构造函数,Date(int y=2012, int m=1 , int d=1); 2、用下面的格式输出日期:日/月/年void Display(); 3、可运行在日期上加一天操作void AddOneDay(); 4、设置日期void SetDay(int y,int m,int d); 5、析构函数,在其中输出“析构函数”。 书写主函数,定义对象,调用AddOneDay()函数,调用输出函数Display(),输出日期。接着,调用设置日期的函数,设置为2012年2月28日,再调用AddOneDay()函数,调用输出函数Display(),输出日期。 4、建立一个Stock类,含有股票代码和股票现价两个数据成员。在主函数中,用new自动为Stock类的对象分配内存,并将股票“600001”,现价8.89存 入内存的相应域中,显示执行结果。