析构函数是有一个特殊的由用户定义的公有成员函数,析构函数特征有:
- 析构函数名为:~<类名>
- 析构函数无任何函数返回类型说明
- 析构函数无参数,所以不能被重载
- 若类声明中没有给出析构函数,系统会自动给出一个默认的析构函数 ~<类名>(){}
- 当对象的生命周期结束及用delete释放动态对象时,系统自动调用析构函数完成对象撤销前的处理
- 析构函数释放动态对象与创建对象的顺序相反
代码小试:
#include<iostream>
using namespace std;
class IntArray
{
public:
IntArray(int sz)
{
m_size=sz;
m_ptr=new int[sz];
}
IntArray()
{
m_size=10;
m_ptr=new int[m_size];
}
void displayArraySize()
{
cout<<"The size is:"<<m_size<<endl;
}
~IntArray()
{
cout<<"Destructing Array with size:"<<m_size<<endl;
delete []m_ptr;//收回额外空间
}
private:
int m_size;
int *m_ptr;
//整型指针在用之前需要给他分配一个内存空间,分配内存空间之后把 分配内存空间首地址赋给m_ptr
};
int main(){
IntArray a(20),b;
a.displayArraySize();
b.displayArraySize();
return 0;
}
运行截图如下:
初学c++面向对象程序设计的小白一枚,又是忘记给指针 m_ptr 前加 “ * ”,又是忘记给类的大括号结尾加“ ; ”,还是需要继续潜心修炼呀,加油!