c++ 智能指针初步理解

最近学习了c++的智能指针,写下自己的理解:

智能指针可以通过c++模板类来实现,这个模板类的主要工作就是科学的管理由模板类参数生成的对象的数量。

智能指针的关键部分是对“=”操作符的重载工作。

举例:

class Stub

{

public:

void print()

{

cout<<"STUB:PRINT"<<endl;

}

~Stub()

{

cout<<"STUB:Destructor"<<endl;

}

};

template<typename T>

class SmartPtr

{

public:

SmartPtr& operator=(const SmartPtr& rhs)

{

..........................

}

...................

private:

T *ptr

size_t *pUse;

};

其中,pUse用于对象的计数。定义完成后应用比较简单(Stub是我们真正用到的类,SmartPtr只是对指向Stub对象的指针进行管理):

SmartPtr<Stub>t1(new Stub);//声明对象t1

SmartPtr<Stub>t2(t1);//声明对象t2,并用t1为其赋值

SmartPtr<Stub>t3(new Stub); 

t3=t2;//此处的“=”操作符经过重载,赋值后指向t2对象的指针计数减一,指向t3对象的指针计数加一

t1->print();

(*t3).print();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值