public member function
<memory>

std::shared_ptr::~shared_ptr

~shared_ptr();
銷燬 shared_ptr
銷燬物件。但是,根據成員 use_count 的值,它可能會產生以下副作用:

  • 如果 use_count 大於1(即,物件正在與其它 shared_ptr 物件共享其管理物件的擁有權):其它與之共享擁有權的物件的 use count 減 1。1.
  • 如果 use_count1(即,物件是其所管理指標的 唯一 擁有者):指向其所管理指標的物件被刪除(如果 shared_ptr 物件是用特定的 deleter 構建的,則呼叫該 deleter;否則,該函式使用 operatordelete).
  • 如果 use_count 為零(即,物件為空),此解構函式沒有任何副作用。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// shared_ptr destructor example
#include <iostream>
#include <memory>

int main () {
  auto deleter = [](int*p){
    std::cout << "[deleter called]\n"; delete p;
  };

  std::shared_ptr<int> foo (new int,deleter);

  std::cout << "use_count: " << foo.use_count() << '\n';

  return 0;                        // [deleter called]
}

輸出

use_count: 1
[deleter_called]


另見