CSDN博客

img ctech

C++的构造函数和析构函数

发表于2004/7/2 11:01:00  1121人阅读

分类: C++

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

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

 

//create.h

#ifndef CREATE_H

#define CREATE_H

 

class CreateAndDestroy{

public:

   CreateAndDestroy(int); //构造函数

   ~CreateAndDestroy(); //析构函数

private:

   int data;

};

 

#endif

 

//ceate.cpp

#include<iostream.h>

#include”create.h”

 

CreateAndDestroy::CreateAndDestroy(int value)

{

   data = value;

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

}

 

CreateAndDestroy::~CreateAndDestroy()

{

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

}

 

//create1.h

#include<iostream.h>

#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;

}

 

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

0 0

相关博文

我的热门文章

img
取 消
img