C++ 面试题 目录

C++ 中 unique_ptr 的特点和用法

推荐答案

-- -------------------- ---- -------
-------- --------
-------- ----------

----- ------- -
-------
    --------- - --------- -- -------- --------------- -
    ---------- - --------- -- -------- ------------- -
    ---- ------------- - --------- -- ------ ------------- -
--

--- ------ -
    ------------------------ ------- -----------
    -------------------
    -- --- --------------
    ------ --
-

本题详细解读

unique_ptr 的特点

  1. 独占所有权unique_ptr 是一种独占所有权的智能指针,意味着同一时间内只能有一个 unique_ptr 指向某个对象。当 unique_ptr 被销毁或重置时,它所管理的对象也会被自动删除。

  2. 不可复制unique_ptr 不能被复制,只能通过移动语义来转移所有权。这意味着你不能通过赋值操作将一个 unique_ptr 赋值给另一个 unique_ptr

  3. 自动释放内存:当 unique_ptr 离开其作用域时,它所管理的对象会自动被删除,从而避免了内存泄漏。

  4. 自定义删除器unique_ptr 允许你指定一个自定义的删除器,用于在释放内存时执行特定的操作。

unique_ptr 的用法

  1. 创建 unique_ptr

  2. 访问对象

  3. 释放所有权

  4. 重置 unique_ptr

  5. 移动语义

  6. 自定义删除器

注意事项

  • unique_ptr 不能用于数组,除非使用 std::unique_ptr<T[]>
  • 使用 unique_ptr 时,确保不会在多个地方持有对同一对象的引用,否则会导致未定义行为。
纠错
反馈