智能指针:auto_ptr和shared_ptr

本文介绍了两种C++智能指针:auto_ptr与shared_ptr。auto_ptr为独占所有权模型,在复制或赋值后原指针置空;shared_ptr采用引用计数机制,多个指针可共享同一对象。文中还特别提醒不要将这两种智能指针用于数组,以防析构不完整。

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

auto_ptr是个pointer-like对象,也就是所谓的“智能指针”,其析构函数会自动调用。

std::auto_ptr < Investment >  ptr1( new  Investment());
// 之后,如果:
std::auto_ptr < Investment >  ptr2(ptr1);
// 或者:
ptr2 = ptr1;
// 那么ptr2指向那个对象,ptr1置空。


shared_ptr类似,但它可以追踪有多少指针指向该对象,并在无指针指向时析构。
这时的拷贝:
ptr2=ptr1;
结果则是两个指针指向同一对象。
auto_ptr和shared_ptr一般都不要指向数组,否则它们只会析构掉数组首元素! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值