析构函数释放对象所使用的资源,并且销毁对象的非static数据成员。
析构函数是类的一个成员函数,名字有波浪号接类名构成。没有返回值,也不接受参数,同时由于析构函数不接受参数,因此它不能重载,所以任何一个类都只具有一个析构函数。
析构函数具有一个函数体和一个析构部分。首先执行函数体,然后执行析构部分,来销毁成员,但是析构部分是隐式的。
其实析构部分就已经把成员给销毁了,那为什么还需要函数体呢?
个人认为是因为隐式销毁一个内置指针类型的成员不会delete它所指向的对象,所以需要函数体来显式销毁一个内置指针类型。
而且当指向一个对象的引用或指针离开作用域时,析构函数不会执行。此处的析构函数是指的这个对象的析构函数,但是我们可以使用智能指针shared_ptr,因为这个指针会执行析构函数,当指向这个对象的智能指针的引用计数变为0的时候,这个对象就自动被释放了。