std::unique ptr::operator=
提供: C++入門
スポンサーリンク
目次
概要
std::unique_ptrのポインタをstd::unique_ptrに直接代入することができません。 明示的なrelease()とreset()を利用するか、std::move()を利用します。 std::unique_ptrからほかのstd::unique_ptrに所有権を移動する場合は、std::move()でやるのが簡単です。
std::unique_ptr::operator= の例
ソースコード unique_ptr_operator_equal.cpp
#include <iostream> #include <exception> #include <memory> int main(int argc, char const* argv[]) { std::unique_ptr<int> foo(new int(123)); std::unique_ptr<int> bar; bar = std::move(foo); std::cout << "foo: " << foo.get() << std::endl; std::cout << "bar: " << bar.get() << std::endl; return 0; }
コンパイル
g++ unique_ptr_operator_equal.cpp -o unique_ptr_operator_equal g++48 -std=c++11 unique_ptr_operator_equal.cpp -o unique_ptr_operator_equal
実行例
% ./unique_ptr_operator_equal foo: 0 bar: 0x28404088
関連項目
- std::unique_ptr
- std::unique_ptr::reset
- std::unique_ptr::release
- std::unique_ptr::get
- std::unique_ptr::swap
- スマートポインタ
ツイート
スポンサーリンク