# std::unique_ptr<T,Deleter>::swap

< cpp‎ | memory‎ | unique ptr

void swap(unique_ptr& other) noexcept; |  | (C++11 起)

交换 `*this` 和另一 unique_ptr 对象 `other` 的被管理对象和关联的删除器。

### 参数

other | - | 要与之交换被管理对象和删除器的另一 unique_ptr 对象

### 返回值

（无）

### 示例

    #include <iostream>
    #include <memory>

    struct Foo {
        Foo(int _val) : val(_val) { std::cout << "Foo...\n"; }
        ~Foo() { std::cout << "~Foo...\n"; }
        int val;
    };

    int main()
    {
        std::unique_ptr<Foo> up1(new Foo(1));
        std::unique_ptr<Foo> up2(new Foo(2));

        up1.swap(up2);

        std::cout << "up1->val:" << up1->val << std::endl;
        std::cout << "up2->val:" << up2->val << std::endl;
    }

输出：

    Foo...
    Foo...
    up1->val:2
    up2->val:1
    ~Foo...
    ~Foo...