析构函数
析构函数的格式和作用:
- 析构函数用于取消对象的成员函数;
- 析构函数作用是清除对象,释放内存;
- 析构函数函数名称为~类名;
- 析构函数没有参数,也没有返回值。
析构函数例子
类里面的构造函数和析构函数都被自动执行了。
#include"iostream"
using namespace std;
class Test
{
public:
Test()
{
p = (char *)malloc(100);
strcpy(p, "11111");
cout << "我是构造函数,自动被调用了" << endl;
}
~Test()
{
cout << "我是析构函数,自动被调用了" << endl;
if (p != NULL)
{
free(p);
}
}
protected:
private:
int a;
char *p;
};
//单独搭建一个舞台
void objPlay()
{
Test t1;
cout << "展示t1的周期" << endl;
}
void main()
{
objPlay();
}
带参数构造函数调用方法
带参数构造函数调用方法有三种,方法如下
className c1(x,y);
className c2=(x,y);
className c3=className(x,y);
完整带参构造函数调用例子
#include"iostream"
using namespace std;
class Test02
{
public:
Test02(int _a = 0, int _b = 0)//无参构造函数 默认构造函数
{
p = (char *)malloc(100);
strcpy(p, "11111");
a = _a;
b = _b;
cout << "我是构造函数,自动被调用了" << endl;
}
~Test02()//无参构造函数 默认构造函数
{
cout << "我是析构函数,自动被调用了" << endl;
if (p != NULL)
{
free(p);
}
}
protected:
private:
int a;
int b;
char *p;
};
//单独搭建一个舞台
void objPlay()
{
Test02 t1(1, 2);
Test02 t2 = (1, 2);
Test02 t3 = Test02(3, 4);
cout << "展示t1的周期" << endl;
}
void main()
{
objPlay();;
}