智能指针(简单版)

本文深入探讨了智能指针的概念及其在C++中的实现,通过模板类SmartPtr展示了如何自动管理动态分配的资源,避免内存泄漏。文章通过具体代码示例解释了智能指针的构造、析构以及运算符重载,使读者能理解智能指针的工作原理和使用场景。

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

#include

/*
智能指针,面向对象的指针。

该指针可以实现自动回收内存的功能。通过将指针交给对象来管理,对象放到栈中,栈由系统进行管理,
来实现自动回收功能,独辟蹊径,妙啊。

实现该智能指针的主要问题在于运算符的重载上。
*/

template
class SmartPtr
{
public:
SmartPtr(T * ptr)
:mptr(ptr)
{}
~SmartPtr()
{
delete [] mptr;
}
T& operator *()
{
return *mptr;
}
T * operator ->()
{
return mptr;
}
private:
T * mptr;
};

class Test
{
public:
Test(int a)
:ma(a)
{}
void Show()
{
std::cout<<“ma:”<<ma<<std::endl;
}
private:
int ma;
};

int main()
{
int* p = new int;
p = 20;
Test
ptest = new Test(10);
ptest->Show();

SmartPtr<int> sp = new int;
*sp = 30;
SmartPtr<Test> sp2 = new Test(40);
sp2->Show(); //sp2.operator->() ==> (Test*) 
return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值