名稱空間
變體
操作

std::unique_ptr<T,Deleter>::~unique_ptr

來自 cppreference.com
 
 
記憶體管理庫
(僅作說明*)
未初始化記憶體演算法
(C++17)
(C++17)
(C++17)
受約束的未初始化
記憶體演算法
C 庫

分配器
記憶體資源
垃圾回收支援
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
未初始化儲存
(直到 C++20*)
(直到 C++20*)
顯式生命週期管理
 
 
~unique_ptr();
(C++11 起)
(C++23 起為 constexpr)

get() == nullptr 則無效果。否則,透過 get_deleter()(get()) 銷燬所擁有的物件。

要求 get_deleter()(get()) 不丟擲異常。

[編輯] 注意

儘管帶有預設刪除器 的 std::unique_ptr<T> 可以用不完整型別 T 構造,但在呼叫解構函式的程式碼點,型別 T 必須是完整型別。

[編輯] 示例

以下程式演示了自定義刪除器的用法。

#include <iostream>
#include <memory>
 
int main () 
{
    auto deleter = [](int* ptr)
    {
        std::cout << "[deleter called]\n";
        delete ptr;
    };
 
    std::unique_ptr<int, decltype(deleter)> uniq(new int, deleter);
    std::cout << (uniq ? "not empty\n" : "empty\n");
    uniq.reset();
    std::cout << (uniq ? "not empty\n" : "empty\n");
}

輸出

not empty
[deleter called]
empty