Namespaces
Variants
Actions

std::enable_shared_from_this<T>::operator=

From cppreference.com
 
 
Memory management library
(exposition only*)
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage(until C++20)
(until C++20*)
(until C++20*)
Garbage collector support(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
 
 
enable_shared_from_this& operator=(const enable_shared_from_this &rhs )noexcept;
(since C++11)

Does nothing; returns *this.

Contents

[edit]Parameters

rhs - another enable_shared_from_this to assign to *this

[edit]Return value

*this

[edit]Notes

weak_this is not affected by the assignment.

[edit]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.

#include <iostream>#include <memory>   class SharedInt :publicstd::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()<<'\n';}

Output:

4

[edit]See also

(C++11)
smart pointer with shared object ownership semantics
(class template)[edit]
close