某日二师兄参加XXX科技公司的C++工程师开发岗位第19面:
面试官:什么是智能指针?
二师兄:智能指针是C++11引入的类模板,用于管理资源,行为类似于指针,但不需要手动申请、释放资源,所以称为智能指针。
面试官:C++11引入了哪些智能指针?
二师兄:三种,分别是
shared_ptr
、unique_ptr
、和weak_ptr
。面试官:说一说三种指针的特征及用途。
二师兄:好的。
shared_ptr
使用了引用计数(use count
)技术,当复制个shared_ptr
对象时,被管理的资源并没有被复制,而是增加了引用计数。当析构一个shared_ptr
对象时,也不会直接释放被管理的的资源,而是将引用计数减一。当引用计数为0时,才会真正的释放资源。shared_ptr
可以方便的共享资源而不必创建多个资源。
二师兄:
unique_ptr
则不同。unique_ptr
独占资源,不能拷贝,只能移动。移动过后的unique_ptr
实例不再占有资源。当unique_