智能指针

本文介绍了一种C++中的智能指针实现方法,并通过具体代码示例展示了其构造、析构及重载运算符等功能,帮助读者理解智能指针如何有效避免内存泄漏。

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

智能指针的实现是C++中的热点,它哦功能就是动态分配对象以及当对象不再需要时自动执行清理,因此不必担心内存泄露问题。智能指针经常出现在各种C++面试中,要有考生说出智能指针的优缺点,甚至让求职者实现一个自己的智能指针。在C++编程领域里,有两种智能指针的实现:auto_ptr和shared_ptr.

auto_ptr<T> ptr(new Y)

shared_ptr<T> ptr(new X)

 

下面为智能指针的示例:

#include<iostream>
using namespace std;
template <class T> class SmartPtr
{
public:
 SmartPtr(T * realPtr=0):pointee(realPtr){};
 SmartPtr(SmartPtr<T> &rhs);
 ~SmartPtr()
 {
  delete pointee;
 }
 SmartPtr &operator=(SmartPtr<T> &rhs);
 T* operator->() const;
 T& operator*() const;
 bool operator!() const;
private:
 T* pointee;
};

template<class T> SmartPtr<T>::SmartPtr(SmartPtr<T> &rhs)
{
 pointee=rhs.pointee;
 rhs.pointee=NULL;
}
template<class T> SmartPtr<T> &SmartPtr<T>::operator=(SmartPtr<T> &rhs)
{
 if(this==&rhs)
  return this;
 delete pointee;
 pointee==rhs.pointee;
 rhs.pointee=0;
 return *this;
}
template<class T>  T* SmartPtr<T>::operator->() const
{
 return pointee;
}
template<class T> T & SmartPtr<T>::operator *() const
{
 return *pointee;
}
template<class T> bool SmartPtr<T>::operator!() const
{
 return pointee==NULL;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值