C++类和对象-构造函数与析构函数
构造函数与析构函数
构造函数形式为与类同名,用于初始化对象;
析构函数形式为~类名(),用于清理对象 ## 默认构造函数
默认构造函数没有参数,若没有自定义构造函数,则类自动提供一个空的默认构造函数。
## 自定义构造函数
通过自定义构造函数来初始化对象,可以提供参数 1
2
3
4
5person()
{
m_age = 0;
m_height = NULL;
}
也可简写:1
2
3
4
5person(int a, int height)//构造函数,实例化时自动调用,用于初始化 普通&拷贝,无参&有参。
{
m_age = a;
m_height = new int(height);
}peoson(int a,int b):m_age(a),m_height(b){} ##
拷贝构造函数 编译器默认提供,但若有属性在堆区则需要深拷贝
使用深拷贝需要自定义析构函数进行清理 1
2
3
4
5person(const person& p)//拷贝构造函数(默认提供)
{
//深拷贝(在堆区重新申请空间,进行拷贝操作,有属性在堆区开辟时需使用)
m_height = new int(*p.m_height);
}1
2
3
4
5
6
7
8~person()//析构函数,对象销毁前自动调用,用于清理(默认提供)
{
if (m_height != NULL)//深拷贝析构
{
delete m_height;
m_height = NULL;
}
}