# std::enable_shared_from_this<T>::operator=

< cpp‎ | memory‎ | enable shared from this

enable_shared_from_this<T>& operator=( const enable_shared_from_this<T> &obj ) noexcept; |  | (C++11 起)

不做任何事；返回 *this 。

### 参数

obj | - | 赋值给 *this 的 `enable_shared_from_this`

### 返回值

*this

### 注意

私有的 std::weak_ptr<T> 成员不受此赋值运算符影响。

### 示例

注意：定义 enable_shared_from_this::operator= 为受保护以避免意外切片，但允许导出类拥有默认的赋值运算符。

    #include <memory>
    #include <iostream>

    class SharedInt : public std::enable_shared_from_this<SharedInt>
    {
    public:
        explicit SharedInt(int n) : mNumber(n) {}
        SharedInt(const SharedInt&) = default;
        SharedInt(SharedInt&&) = default;
        ~SharedInt() = default;

        // 两个赋值运算符都使用 enable_shared_from_this::operator=
        SharedInt& operator=(const SharedInt&) = default;
        SharedInt& operator=(SharedInt&&) = default;

        int number() const { return mNumber; }

    private:
        int mNumber;
    };

    int main() {
        std::shared_ptr<SharedInt> a = std::make_shared<SharedInt>(2);
        std::shared_ptr<SharedInt> b = std::make_shared<SharedInt>(4);
        *a = *b;

        std::cout << a->number() << std::endl;
    }

输出：

    4

### 参阅

shared_ptr (C++11) | 拥有共享对象所有权语义的智能指针 (类模板)