1.什么是智能指针?
智能指针(SmartPointer),简单来说,就是用起来像指针,但是很聪明,可以自己在适当的时候删除动态分配的对象的指针。
2.什么时候使用智能指针?
智能指针主要用于生存期控制和阶段控制。比如,在一个类中,如果有指针成员,那么,如果类写的不够小心,就很容易出异常。因为指针指向的动态内存,必须在拷贝构造或者赋值时,复制一份同样大小的内存。否则,容易引起内存泄漏或者对未定义的指针就行删除。
3.使用智能指针的优势是什么?
多个对象间可以共享一份动态内存,并且不需要费心在动态内存的申请和释放上。关于第一点,我觉得有点像Linux下的文件管理系统的机制。
4.智能指针如何实现?
智能指针的实现,关键技术在于“引用计数“。具体来说,通常有两种方式:第一,使用辅助类。第二,使用句柄类。我们通常采用句柄类的方式来实现,原因是这样作可以减少客户代码和类代码之间的耦合性。
5.如何使用智能指针?
STL库中的auto_ptr和Boost中的一些智能指针。