构造函数和析构函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三周实验构造函数和析构函数

实验目的:

1、清楚构造函数的作用,掌握构造函数的声明、定义方法;

2、掌握重载构造函数、带参数构造函数的定义、应用;

3、熟悉用参数列表初始化数据成员的书写方式;

4、清楚析构函数的作用,掌握析构函数的声明、定义方法;

5、熟悉构造函数、析构函数的调用顺序。

实验内容

一、请按要求运行下列程序,并回答相关问题,从中体会构造函数的作用:

#include

using namespace std;

class Time

{

private:

int hour, minute, second;

public:

void disp();

};

void Time::disp()

{

cout<

}

void main()

{

Time time;

time.disp();

}

问题:

(1)查看程序的运行结果,你能发现其中的问题吗?

(2)给类增加一个无参数的构造函数,再次运行程序。程序结果有无变化?从中你能体会构造函数具有什么作用?

Time::Time() //定义构造函数

{

hour=0;

minute=0;

second=0;

}

问题:请用参数列表初始化数据成员的方式改写构造函数,查看程序运行结果有无不同?

二、阅读、运行下列程序,并回答相关问题,进一步熟悉构造函数、析构函数的定义、调用,清楚对象构造、析构的顺序:

#include

using namespace std;

class Test

{

private:

int x;

public:

Test()

{

cout<<"对象地址: "<

x=0;

}

~Test()

{

cout<<"对象地址: "<

}

void print()

{

cout<<"数据成员: x="<

}

};

void main()

{

Test obj1,obj2; //创建对象时,自动调用构造函数

obj1.print();

obj2.print();

}

问题:

(1)析构函数有什么作用?在书写时,与构造函数有什么相同点和不同点?

(2)程序中的this代表什么?this能否写在main()函数中?

(3)构造函数、析构函数的调用顺序怎样?

三、输入、运行下列程序代码,并回答相关问题,熟悉构造函数的重载:

问题:

(1) A类定义了几个构造函数?它们的参数如何?

(2) main( )函数中定义了几个对象,系统分别自动调用了哪个构造函数来创建、初始化相应对象?

四、根据要求,编写程序:

定义一个图书类(Book),该类的数据成员有:书名(bookname)、作者(authors)、页数(pages)、出版社(publishing_house)、价格(price),要求如下:

1、图书的所有属性都是私有的,数据成员的类型根据实际情况来确定;

2、给该类添加相应的getXxx、setXxx函数来获取、设置该类的私有成员;

3、给该类添加适当的构造函数、析构函数来初始化、清理对象;

4、在main()函数定义两本图书:

●《C++程序设计》,谭浩强编著,485页,清华大学出版社,36.00元

●《吹牛大王历险记》,拉斯伯等编著,149页,天津人民出版社,12.80元

然后将这两个对象的成员信息输出到屏幕上。

相关文档
最新文档