智能指针的设计初衷是:
C++中没有提供自动回收内存的机制,每次new对象之后都需要手动delete。稍不注意就memory leak。
智能指针可以解决上面遇到的问题。
C++中常见的智能指针包括(共七种):
std::auto_ptr
boost::scoped_ptr
boost::shared_ptr
boost::intrusive_ptr
boost::scoped_array
boost::shared_array
boost::weak_ptr
其实,智能指针并不是指针,它仅仅是一个栈对象而已。
在栈对象的生命周期结束时,智能指针调用析构函数释放其管理的堆内存。
所有的智能指针都重载了'operator->'操作符,用来返回其管理对象的引用。从而可以
执行所管理对象的一些操作。
两个方法:
- get()
访问智能指针包含的裸指针引用
- reset()
若传递参数为空或NULL 则智能指针会释放当前管理的内存。
若传递参数为一个对象 则智能指针会释放当前管理的内存,管理新传入的对象。