C++中析构函数详解【超级详细】
·
1、析构函数的作用
主要作用:在于对象销毁前系统会自动调用,进行一些清理工作。【收回创建对象时申请的空间】
2、析构函数的格式
格式:~类名(){函数体} --- ~Person(){...}
3、析构函数的性质(与构造函数类似)
析构函数的性质 | |
---|---|
(1)析构函数无返回值也不写void,并且没有函数类型; | |
(2)析构函数的函数名称要与类名相同; | |
(3)析构函数没有参数列表,不可以进行函数重载;【构造函数有参数列表,并且可以进行重载】 | |
(4)析构函数在对象销毁时会自动调用,不需要进行手动调用,并且只调用一次。 |
4、析构函数的实例
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class Person {
public:
//有参构造函数
Person(int a, int b, int q)
{
Age = a;
Data = b;
p = (int*)malloc(sizeof(int));
*p = q;
cout << "调用了有参构造函数!!!" << endl;
}
//用户提供的拷贝构造函数
Person(const Person& c)
{
Age = c.Age;
Data = c.Age;
p = (int*)malloc(sizeof(int));
*p = *(c.p);
cout << "调用了用户提供的拷贝构造函数!!!" << endl;
}
//析构函数
~Person()
{
free(p);
cout << "调用了析构函数!!!" << endl;
}
int Age;
int Data;
int* p;
};
int main()
{
Person a(10, 20, 30);
cout << "----------------------------" << endl;
cout << "a中p的值:" << *(a.p) << endl;
cout << "a中p的地址:" << a.p << endl;
cout << "----------------------------" << endl;
Person b = a; //使用隐式转化法调用拷贝构造函数【深拷贝】
return 0;
}
运行结果:
析构函数调用规则:先构造的后析构,后构造的先析构。
更多推荐
已为社区贡献2条内容
所有评论(0)