当前位置:首页 > 芯闻号 > 充电吧
[导读]类的构造函数是在生成类的对象时自动调用的,它用来初始化对象的数据成员。类的析构函数是以类名前加上“~”为函数名的函数,它在删除对象时自动调用,即程序执行离开初始化类对象的范围时调用。析构函数本身并不实

类的构造函数是在生成类的对象时自动调用的,它用来初始化对象的数据成员。类的析构函数是以类名前加上“~”为函数名的函数,它在删除对象时自动调用,即程序执行离开初始化类对象的范围时调用。析构函数本身并不实际删除对象,而是进行系统放弃内存之前的清理工作,使内存可以用于保存新的对象。

  构造函数与析构函数是自动调用的,他们的调用顺序取决于执行过程进入和离开对象的顺序。我们来举个具体例子,来说明他们的调用顺序。

 

//create.h

#ifndef CREATE_H

#define CREATE_H


 

class CreateAndDestroy{

public:

   CreateAndDestroy(int); //构造函数

   ~CreateAndDestroy(); //析构函数

private:

   int data;

};


 

#endif


 

//ceate.cpp

#include

#include”create.h”


 

CreateAndDestroy::CreateAndDestroy(int value)

{

   data = value;

   cout<<”对象 ”<<data<<” 建立”;

}


 

CreateAndDestroy::~CreateAndDestroy()

{

   cout<<”Object “<<data<<” destructor”<<endl;

}


 

//create1.h

#include

#include”create.h”


 

void create(void);


 

CreateAndDestroy first(1);//全局对象


 

int main()

{

   cout<<”   (全局对象在main之前建立)”<<endl;

   CreateAndDestroy second(2);    //局部对象

   cout<<”   (局部自动对象在main函数内部建立)<<endl;


 

   static CreateAndDestroy third(3);  //局部对象

   cout<<”   (局部静态对象在main中建立)“<<endl;


 

   create();  //调用create()建立对象


 

   CreateAndDestroy fourth(4);   //局部对象

cout<<”   (局部自动对象建立)”<<endl;

return 0;

}        


 

void create(void)

{

   CreateAndDestroy fifth(5);

   cout<<”   (局部自动对象在create()中建立)”<<endl;


 

   static CreateAndDestroy sixth(6);

   cout<<”   (局部静态对象在create()中建立)”<<endl;

  

   CreateAndDestroy seventh(7);

   cout<<”   (局部自动对象在create()中建立)”<<endl;

}


 

对象fourth和second的析构函数在到达main结尾时一次调用。由于third是static局部对象,因此到程序结束时才退出,在程序终止时删除所有其他对象之后和调用first的析构函数之前调用对象third的析构函数。函数create声明三个对象。对象fifth和seventh是局部自动对象,对象sixth是static局部对象。对象seventh和fifth的析构函数在到达create结尾时自动调用。由于对象sixth是static局部对象,因此到程序结束时才退出。sixth的析构函数在程序终止时删除所有其他对象之后和调用third和first的新构函数之前调用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭