首页 理论教育C++程序设计基础教程对象生存期

C++程序设计基础教程对象生存期

【摘要】:如同一个变量一样,对象从被创建到被释放为止的时间称为对象的生存期。一个对象的生存期如图2.8所示。从上看到,分配对象的内存空间和调用构造函数进行数据成员初始化是两个不同的阶段。构造函数帮助对象自动进行初始化,并且初始化的同时可以执行其他操作。

如同一个变量一样,对象从被创建到被释放为止的时间称为对象的生存期。一个对象的生存期如图2.8所示。

图2.8 一个对象的生存期

图2.8中前两步是为对象的使用做前期准备工作,第3步通过调用对象的成员函数实现该对象功能,当该对象不再需要时执行第4步做清理工作,第5步释放其内部定义的对象或变量,第6步将该对象从内存中清除,系统收回为其分配的内存空间。

例如,有如下程序:

程序中先声明了一个类Myclass。在main函数中,定义了一个对象stu,下面分析该对象的生存期:

(1)遇到“Myclass stu(1,"李静");”语句,创建stu对象,即给对象stu按照Myclass类的声明分配相应的内存空间(其大小为Myclass类中数据成员占用的内存空间之和),此时stu的各数据成员都有了存储空间,但没有值。

(2)调用Myclass类的构造函数,给stu对象的各个成员赋初值,将stu.no置为1,给stu.pname分配一个长度为5的字符空间,stu.pname指向其起始地址,并将该字符空间置为“李静”。(www.chuimin.cn)

(3)遇到“stu.disp();”语句,调用它的成员函数disp()输出各成员值。

(4)main函数执行完毕,不再需要stu对象,调用它的析构函数释放为成员pname分配的内存空间。

(5)由于没有内部对象,不做这一步。

(6)释放stu占用的内存空间。

从上看到,分配对象的内存空间和调用构造函数进行数据成员初始化是两个不同的阶段。没有构造函数的类对象与此相似。构造函数帮助对象自动进行初始化,并且初始化的同时可以执行其他操作。