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


另見