一、析构函数
1、析构函数的作用
对象消亡时,自动被调用,用来释放对象占用的内存空间。
2、属性特点
(1)名字与类名相同
(2)在前面需要加上"~"
(3)无参数,无返回值(也不能加void)
(4)一个类最多只有一个析构函数
(5)不自定义析构函数C++会生成默认析构函数
二、C++默认生成的函数
在默认情况下,定义一个C++类都会默认生成以下三个函数:
- 默认构造函数(无参,函数体为空)
- 默认析构函数(无参,函数体为空)
- 默认拷贝构造函数(对类中非静态成员进行简单值拷贝)
注意:
若自定义了拷贝构造函数,将不再提供任何构造函数。
若自定义了普通构造函数,将不会提供默认构造函数,但还是会提供默认拷贝构造函数。
三、构造与析构的调用顺序
构造函数是先定义的先调用,而析构函数是先定义的后调用,类似于“栈”存储结构。
class Test
{
int id;
public:
Test(int i)
{
id = i;
}
~Test()
{
cout<<"ID: "<<id<<" 已析构对象内存空间"<<endl;
};
};
Test t0(0); //最先创建的对象,最后释放
void Func()
{
static Test t1(1); //创建静态对象,会在整个程序结束时自动释放
Test t2(2); //在Func结束时自动释放
cout<<"-----Func-----"<<endl;
}
int main()
{
Test t3(3);
t3 = 10; //类型转换构造函数,这里会创建临时对象,将int型转成Test类型对象,在赋值结束后,临时变量销毁
cout<<"------主函数开始-------"<<endl;
{
Test t4(4); //花括号代表作用域,不需要等到main方法结束就释放了
}
Func(); //进入Func函数
cout<<"------主函数结束-------"<<endl;
return 0;
}
四、构造函数的浅拷贝
就是构造函数只进行简单的值拷贝。
/*浅拷贝*/
#include <iostream>
#include

最低0.47元/天 解锁文章
1922

被折叠的 条评论
为什么被折叠?



