std::enable_shared_from_this<T>::operator= (3) - Linux Manuals

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

NAME

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

Synopsis


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


Does nothing; returns *this.

Parameters


obj - an enable_shared_from_this to assign to *this

Return value


*this

Notes


The private std::weak_ptr<T> member is not affected by this assignment operator.

Example


Note: enable_shared_from_this::operator= is defined as protected in order to prevent accidental slicing but allow derived classes to have default assignment operators.
// Run this code


  #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;


      // Both assignment operators use 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;
  }

Output:


  4

See also


shared_ptr smart pointer with shared object ownership semantics
           (class template)
(C++11)