C++类与对象(默认成员函数之析构函数)

我们前面知道的是,在实例化一个对象的时候,我们会调用一个构造函数,这个构造函数的作用是初始化我们类的成员变量,但是,有没有人想过,既然C++已经可以初始化成员变量了,那么,在我们程序即将结束的时候,是不是要把占用的内存归还给操作系统,但是你归还完以后,他这快内存可能还有一些数据是你没有清理干净的(尤其是一个函数中有在堆上开辟空间的,如果不释放这块空间就会导致内存泄漏),所以,此时的析构函数就是来清理这些数据的。那么,我们以知道析构函数的作用,那么,它有哪些特点呢?

析构函数:他和构造函数的一样,与类的名字一样,但是要在前面加上~。其次,他没有参数没有返回值。最后就是,如果自己在定义类的时候,没有写析构函数,编译器也会默认生成一个析构函数,他和构造函数一样,对内置类型不做处理,对自定义类型会返回去调用自己的析构函数。而且他还不可以重载。我们可以看下面的代码:

C++类与对象(默认成员函数之析构函数)_第1张图片

上面就是我的代码,还是以日期类作为讲解的对象,构造函数就不多说了,来看看析构函数吧,我们可以看见的是我在main函数中实例化了一个对象,现在我们可以调试看看,如下:

C++类与对象(默认成员函数之析构函数)_第2张图片 

执行完date s之后,我们可以看见s的年月日,这里启用了构造函数,就不多说,现在要执行return 0这句代码了,应为是程序结束会把这块空间归还给操作系统,所以析构函数在归还空间前,会对这块内存进行清理工作,我们可以看见的是我清理的年月日都是0,我们运行看看:

C++类与对象(默认成员函数之析构函数)_第3张图片 

 我们可以清楚的看到的是,他已经清理成0了,又写朋友可能还不相信,咱们还可以这样:

C++类与对象(默认成员函数之析构函数)_第4张图片

 我们在析构函数内部写了一个打印调用析构函数的字样,我们编译运行一下看看:

 我们可以看见他打印了出来,所以,我们就可以知道析构函数的作用是清理工作。但是我想说的是,其实析构函数在日期类的对象中没有必要写,因为他请不清理都一样,不会造成什么严重的后果,它主要是要在栈,等数据结构中写,因为此时他会在对上开辟空间,此时在写析构函数的话,它的作用就体现了出来,可以释放对上开辟的空间。

以上就是类与对象的析构函数,如果有收获的话就点一下赞吧!支持一下!!谢谢

你可能感兴趣的:(C++篇,c++,开发语言)