列表

详情


117. 请你说说 unique_ptr 的实现原理及使用场景

回答思路

得分点 所有权、private、delete 标准回答 1. 实现原理 建立所有权(ownership)概念,对于特定的对象,只能有一个智能指针可拥有它,这样只有拥有对象的智能指针的析构函数会删除该对象。然后,让赋值操作转让所有权,这就是用于 unique_ptr 的策略。 unique_ptr 中把拷贝构造函数和拷贝赋值声明为 private 或 delete,这样就不可以对指针指向进行拷贝了,也就不能产生指向同一个对象的指针。 2. 使用场景 如果程序不需要多个指向同一个对象的指针,则可以使用 unique_ptr; 如果使用 new [] 分配内存,应该选择 unique_ptr; 如果函数使用 new 分配内存,并返回指向该内存的指针,将其返回类型声明为 unique_ptr 是不错的选择。

上一题