析构函数
来源:互联网 发布:建筑工程招投标软件 编辑:程序博客网 时间:2024/05/14 22:53
析构函数是 这种格式: ~类名(); 无返回值
析构函数是为了在某个对象即将释放时对该对象的一些内存信息进行释放所产生的一种函数
析构函数大致有四种情况。
1:如果在一个函数中创建一个对象,当函数将要结束时,析构函数将会被调用.
2:如果该对象是一个static 对象则不会,因为当函数结束时,这个对象并没有释放,所以函数结束时析构函数不会调用,只有当main函数结束时或者,调用exit结束主程序时,会调用该对象的析构函数
3:如果是全局对象,也是在main函数结束时调用析构函数
下面是简单例子:
//helloWorld.h
#include <iostream>
using namespace std;
class helloWorld
{
public:
~helloWorld();
void function();
void function_1();
};
====================================
// helloWorld.cpp
#include "helloWorld.h"
using namespace std;
helloWorld::~helloWorld()
{
cout<<"析构函数被调用\n";
cout<<"析构函数结束\n";
}
void helloWorld::function_1()
{
cout<<"function_1函数被调用\n";
cout<<"function_1函数结束\n";
}
void helloWorld::function()
{
cout<<"function函数被调用\n";
static helloWorld a;//假若该对象不是static 对象,则该对象的析构函数将在function_1函数结束时被调用
a.function_1();
cout<<"function函数结束\n";
}
==============================
//main.cpp
#include "helloWorld.h"
int main()
{cout<<"主函数开始\n";
helloWorld a;
a.function();
cout<<"主函数《将要》结束\n";
return 0;
}
//结果:主函数开始
function函数被调用
function_1函数被调用
function_1函数结束
function函数结束
主函数《将要》结束
析构函数被调用
析构函数结束
析构函数被调用
析构函数结束
请按任意键继续. . .
<h1>如上</h1>
===============
4:通过new动态创建的对象,在用delete释放时,则先调用该对象的析构函数 :
helloWorld* a=new helloWorld;
a->function_1();
执行结果为;
主函数开始
function函数被
function_1函数
function_1函数
function函数结
主函数《将要》
析构函数被调用
析构函数结束
没有通过delete则不执行两次 析构函数
如果在调用function_1后 delete对象则结果为:
主函数开始
function函数被调用
function_1函数被调用
function_1函数结束
析构函数被调用//这里是delete 立刻就被调用了
析构函数结束
function函数结束
主函数《将要》结束
析构函数被调用
析构函数结束
0 0
- 函数 - 构造函数 - 析构函数
- 构造函数、析构函数、虚函数
- 虚函数/构造函数/析构函数
- 构造函数&析构函数&虚函数
- 构造函数,析构函数
- 构造函数,析构函数
- 构造函数+析构函数
- 构造函数/析构函数
- 析构函数 虚函数
- 析构函数 虚函数
- 构造函数 & 析构函数
- 构造函数 析构函数
- 析构函数,构造函数
- 构造函数、析构函数
- 构造函数,析构函数
- 构造函数,析构函数
- 构造函数,析构函数
- 虚函数 析构函数
- C++与JAVA中的某些语言风格以及需要注意的地方
- 关于类的声明和定义分离的问题
- ThinkPHP的使用(一)
- 挑战密室
- C++ 友元函数,友元类等
- 析构函数
- C++ 11个注意要点
- 虚函数、继承需要注意的几点
- 派生类的构造函数
- 替代密码理论学习
- 头文件无法打开的情况之一
- eclipse怎么切换SVN的用户
- PyCharm激活码
- PHPStorm 2016.3 激活码