析构函数和构造函数

析构函数

析构函数的格式和作用:

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

析构函数例子

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

#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();;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容