关于析构函数与内存

本文详细解析了C++中类的构造函数和析构函数的工作机制,包括对象初始化、作用域和资源释放的过程。通过实例展示了构造函数如何在对象创建时设置初始值,以及析构函数在对象生命周期结束时清理资源。重点讨论了对象生命周期管理的重要性及正确使用构造函数和析构函数以避免资源泄露的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "stdafx.h"
#include "iostream"
using namespace std;
class A{
private:
int a;
public:
A(int b = 10):a(b){cout<<"struct"<<endl;}
~A(){cout<<"destruct"<<endl;}
void start() {
cout<<a<<endl;
}
void set(int n) {
a = n;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A* b;
{
A a(2);
b = &a;
b->start();

}

//此时a已经被析构了。

b->set(3);

b->start(); //这里a已经被析构了,为什么这里不报错呢!?

//析构的时候,为了效率,并不会将内存清0。这样的话。对象的空间仍在那里放着,只是别人现在能够用了。\
如果内部没有得破坏,指针依然指向那么空间,所以可以继续操作。所以指针用完后要置NULL,否则仍然指向那片空间。\
如果空间被别的程序占用了,但是这个指针仍然指向他。如果这个指针被误操作使用了这片内存,就会破坏别的程序的 结构了。

getchar();
return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值