- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第五讲析构函数析构函数(destructor)当一个对象生命期结束时,系统自动调用析构函数进行清除对象,释放内存等。没有定义析构函数时,系统提供缺省版本的析构函数特点:析构函数名为:~类名没有参数,也没有返回类型析构函数(destructor)构造函数的反函数,析构函数是用于取消对象成员函数,当一个对象生命期结束时,系统自动调用析构函数。析构函数名字为符号“~”加类名;析构函数没有参数和返回值。一个类中只可能定义一个析构函数,析构函数不能重载。析构函数的作用进行清除对象,释放内存等; 析构函数(destructor)如果一个类没有定义析构函数,编译器会自动生成一个默认析构函数,其格式如下: 类名::~默认析构函数名() { } 默认析构函数是一个空函数。析构函数(destructor)classTime{public:Time();Time(int,int,int);~Time();……private:inthour;intmin;intsec;};析构函数的调用构造函数与析构函数自动调用(1)一个对象当其结束生命周期时;(2)使用new运算符创建的对象,在使用delete运算符释放该对象时;两种情况下,析构函数将被自动调用。调用顺序取决于执行过程进入和离开实例化对象范围的顺序。一般析构函数的调用顺序与构造函数相反。示例array.cpp创建对象时都要调用构造函数(包括默认构造函数)。构造函数的工作是建立对象的基本结构,进行数据初始化。即:初始化虚函数表;建立基类对象;建立非静态数据成员对象;安置虚基类对象信息;执行构造函数体中的代码。当一个对象结束生命期时,都要调用析构函数。析构函数的工作是:执行析构函数中的代码,将对象占据的存储空间归还系统,做公共及用户要求的善后工作。构造函数与析构函数的调用自身与成员对象的析构函数顺序先自己析构,再成员析构编码练习TimeData定义一个盒子类,包括数据成员长、宽和高等属性,求体积的成员函数、构造函数和析构函数。代码模拟:classBox//Box.h{public:Box(int=1,int=1,int=1);intvolume();private:intheight;intwidth;intlength;};Box∷Box(inth,intw,intlen):height(h),width(w),length(len)//Box.cpp{}intBox∷volume(){ return(height*width*length);}函数中应用对象对象可以作为函数的参数函数可以返回对象#includeiostreamusingnamespacestd;classcXydata{private: intx;inty;public: cXydata(); cXydata(inta); cXydata(inta,intb);voidclear(){x=0;y=0;}voiddisp(){coutx=x“y=y\n;}};cXydata::cXydata(){ x=0;y=0;}cXydata::cXydata(inta){x=a;y=0;}cXydata::cXydata(inta,intb){ x=a;y=b;}cXydatadt1()//定义全局函数dtl(){cXydataa(800,900);//orcXydataa=newcXydata(800,900)returna;}intmain(){cXydatadt1();//函数说明;cXydatadt2;dt2.disp();dt2=dt1();dt2.disp();return0;}代码练
文档评论(0)