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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值