/*
构造函数实在定义类对象时被自动调用的成员函数,而析构函数是在已经生成的对象被释放时自动调用的成员函数
在一般类中,不需要定义析构函数
析构函数主要用于对已申请的内存空间进行释放等后处理工作
*/
#include<iostream>
#include<string.h>
using namespace std;
class test
{
char *x;
public:
test(const char *s);
//const char *s给我一个字符的意思,不加const会有warning警告,因为系统会认为你想改变s的值
~test();//析构函数
void disp();
};
test::test(const char *s)
{
x=new char[strlen(s)+1];//动态申请的存储空间不能被自动释放掉
strcpy(x,s);
cout<<"enter x constructor !"<<endl;
}
test::~test()
{
delete[] x;
cout<<"enter x destructor !"<<endl;
}
void test::disp()
{
cout<<"x="<<x<<endl;
}
void f()//全局函数
{
test dt("abcd");
dt.disp();
}
int main()
{
f();
test p("ABCD");
p.disp();
//全局函数f调用结束后,自动调用析构函数,释放掉已经申请的内存空间
//同理main函数执行结束后,自动调用析构函数
}
/*result:
enter x constructor !
x=abcd
enter x destructor !
enter x constructor !
x=ABCD
enter x destructor !
*/
面向对象程序设计 类 析构函数
最新推荐文章于 2025-01-16 20:23:59 发布