必威体育Betway必威体育官网
当前位置:首页 > IT技术

析构函数

时间:2019-11-06 07:16:00来源:IT技术作者:seo实验室小编阅读:90次「手机版」
 

析构函数

  1. 析构函数:在类中声明的一种成员函数

    ①析构函数与类名同名

    ②析构函数无参(不可重载)

    ③表示:

~类名()
					{
					析构函数体;
					}
  1. 调用:i:析构函数由系统自动调用

    ——释放一个对象时,系统将自动地为该对象调用析构函数

    ii:目的:进行一些与该对象有关的销毁性工作

    iii:用new分配的动态对象在释放时,系统要为该动态对象调用析构函数

  2. 局部对象:在函数内用类名定义的对象

    全局对象:在函数外用类名定义的对象

    i:局部对象在函数运行完成时要释放

    全局对象在整个程序执行完成后释放

    ii:全局对象在编译阶段即分配单元

对象的释放顺序严格与定义顺序相反(即析构函数的调用顺序严格与构造函数相反)

#include<iOStream>
using namespace std;
class Myclass{
	public:
		Myclass(){
			cout<<"Myclass conts"<<endl;
		}
		~Myclass()
		{
			cout<<"Myclass Dels"<<endl;
		}
};
Myclass myGlobal;
int main()
{
	Myclass my1,my2;
	Myclass *Pmy=new Myclass();
	delete Pmy;
 }

类内new在类内delete

#include<iostream>
using namespace std;
class Myclass{
	private:
		int *px;
	public:
		Myclass(){
			px=new int(3);
		}
		void print()
		{
			cout<<*px<<endl;
		}
		~Myclass()
		{
			delete px;
		}
};
int main()
{
	Myclass my;
	my.Print();
 }

若在类中未定义析构函数,系统会自动生成一个空析构函数,以保证释放对象时可以调用

客户端new的对象,一定可以在客户端delete

#include<iostream>
using namespace std;
class Myclass{
	private:
		int *px;
	public:
		Myclass( int *t)
		{
			px=t;
		}
		void Print()
		{
			cout<<*px<<endl;
		}
		~Myclass()
		{
			delete px;
		}
};
int main()
{
	Myclass *pmy=new Myclass(new int(3));
	pmy->Print();
	delete pmy;
 }

文章最后发布于: 2019-04-28 18:49:19

相关阅读

析构函数

1.什么是析构函数 析构函数于构造函数相对应,构造函数是对象创建的时候自动调用的,而析构函数就是对象在销毁的时候自动调用的的

析构函数写成virtual的好处

相信学习c++的很多同志都听过这样的建议:最好将类的析构函数写成虚函数,如下:class B { public: B() { printf("B()\n"); }

java中的析构函数

乍一看,java里面怎么还有这样的词语。其实:析构函数(destructor) 与  构造函数 相反,当对象结束其 生命周期时(例如对象所在的函数

构造函数和析构函数

通过C++ Primer重新回顾构造函数和析构函数,发现真的好多都忘了… 构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次

分享到:

栏目导航

推荐阅读

热门阅读