public member function
<memory>

std::shared_ptr::unique

bool unique() const noexcept;
检查是否唯一
返回 shared_ptr 对象是否不与其他 shared_ptr 对象共享其指针的所有权(即,它是唯一的)。

空指针永远不是唯一的(因为它们不拥有任何指针)。

唯一的 shared_ptr 对象负责在释放此所有权时删除其管理的对象的(参见 析构函数)。

此函数应返回与以下相同的值:(use_count()==1)尽管它可能以更有效的方式实现。

参数



返回值

true如果这是唯一的 shared_ptrfalse否则为 false。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// shared_ptr::unique
#include <iostream>
#include <memory>

int main () {
  std::shared_ptr<int> foo;
  std::shared_ptr<int> bar (new int);

  std::cout << "foo unique?\n" << std::boolalpha;

  std::cout << "1: " << foo.unique() << '\n';  // false (empty)

  foo = bar;
  std::cout << "2: " << foo.unique() << '\n';  // false (shared with bar)

  bar = nullptr;
  std::cout << "3: " << foo.unique() << '\n';  // true

  return 0;
}

输出
foo unique?
1: false
2: false
3: true


另见