析构函数和构造函数

析构函数

析构函数的格式和作用:

  • 析构函数用于取消对象的成员函数;
  • 析构函数作用是清除对象,释放内存;
  • 析构函数函数名称为~类名;
  • 析构函数没有参数,也没有返回值。

析构函数例子

类里面的构造函数和析构函数都被自动执行了。

#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();;
}

你可能感兴趣的:(析构函数和构造函数)