我是c ++的新手.我在我的代码中遇到过std :: unique_ptr和std :: shared_ptr的用法
typedef std::unique_ptr<type1> type1Handler;
typedef std::shared_ptr<type2> type2Handler;
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
unique_ptr和的优点是什么?shared_ptr可能一个例子会有所帮助!
它们适用于2种完全不同的用例.
std::unique_ptr保留对象的唯一所有权,并在unique_ptr超出范围时销毁该对象.没有两个unique_ptr实例可以管理同一个对象.(http://en.cppreference.com/w/cpp/memory/unique_ptr)
std::shared_ptr保留对象的共享所有权.多个shared_ptr对象可能拥有相同的对象.当最后一个shared_ptr拥有该对象的对象被销毁或者shared_ptr拥有该对象的最后一个通过operator=或被分配另一个指针时,该对象被销毁并且其内存被释放reset().(http://en.cppreference.com/w/cpp/memory/shared_ptr)
强制执行唯一所有权std::unique_ptr是不可转让和不可复制的.这意味着你必须使用移动语义.
如果你看到unique_ptr代码中的某处,这意味着Look,这里是指针,我们拥有它!.这不能说shared_ptr,所有权可以分散在代码周围.
| 归档时间: |
|
| 查看次数: |
1689 次 |
| 最近记录: |