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

原创 2004年07月02日 11:01:00

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

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

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

//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的新构函数之前调用。

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

C++是面向对象的编程语言,在定义类的时候,离不开构造和析构函数。类中同类同名的成员函数称为构造函数,主函数中初始化一个对象时,如果有传入数据,其实是传入到构造函数的形参中。...
  • ladybai
  • ladybai
  • 2016年03月10日 14:51
  • 2777

C#—构造函数和析构函数

一、前言         作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性,C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,但是程序通过了编译检查并不表示错误已经不...
  • zm13722251407
  • zm13722251407
  • 2015年10月29日 20:36
  • 1907

深入理解C++类的构造函数与析构函数

在研究C++类的继承、派生、组合时,一直没有清晰地了解构造函数与析构函数的调用过程。本章通过点-线组合类,来深入分析组合类情况下,对象的构造与析构。 1.问题的引入 源代码: #include ...
  • shenziheng1
  • shenziheng1
  • 2016年07月13日 23:16
  • 1778

C++实验报告(构造函数与析构函数的编程)

  • 2017年11月11日 19:26
  • 119KB
  • 下载

C++构造函数析构函数

  • 2015年06月02日 21:17
  • 64KB
  • 下载

C++构造函数与析构函数

  • 2010年12月03日 21:08
  • 187KB
  • 下载

c++程序设计第十章构造函数和析构函数

  • 2013年02月22日 10:33
  • 205KB
  • 下载

包含构造函数和析构函数的C++程序

  • 2011年10月20日 15:22
  • 589B
  • 下载

C++构造函数_析构函数和赋值操作符学习小结

  • 2011年08月15日 15:29
  • 36KB
  • 下载

数据结构 C++ 详细注释 构造函数与析构函数 类型转换.rar

  • 2011年05月15日 16:37
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++的构造函数和析构函数
举报原因:
原因补充:

(最多只允许输入30个字)