最近在准备实习生面试,复习了一下C++,顺便分享一下智能指针的知识:
智能指针并不是一个指针,而是由三个类构成的,这三个类分别为智能指针类,动态分配对象类,引用类。
为什么需要智能指针呢?它有什么作用呢?
答:管理多个指针指向同一个动态分配对象释放问题.如果对象过早释放会产生悬浮指针.如果不释放会造成内存泄漏
下面从代码上理解智能指针工作的过程与原理:
//智能指针测试类
class SmartTest
{
public:
void fun()
{
cout<<"fun"<<endl;
}
};
//引用类(要求引用类的成员都为私有,防止在类外直接访问引用的成员,只能在智能指针类中访问)
class SmartRef
{
friend class Smart;
private:
SmartRef(SmartTest * _ptr_smarttest)
{
ptr_smarttest=_ptr_smarttest;
counter=0;
}
~SmartRef()
{
if(ptr_smarttest!=NULL)
{
delete ptr_smarttest;
ptr_smarttest