std::enable_shared_from_this<T>::operator=
提供: cppreference.com
< 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= は protected
として定義されます。
Run this code
#include <memory>#include <iostream> 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()<<std::endl;}
出力:
4
[編集]関連項目
(C++11) | 共有オブジェクト所有権のセマンティクスを持つスマートポインタ (クラステンプレート) |