Episteme unique_ptr
- 6. {
auto pfoo = make_unique<foo>(“adam”,10);
auto afoo = make_unique<foo[]>(4);
…
}
- 7. unique_ptr<foo> p;
unique_ptr<foo> q;
p = q; // error!(見た目はcopy/挙動はmove)
p = std::move(q); // OK
※ unique_ptr& operator=(const unique_ptr&) = delete;
そのかわり
unique_ptr& operator=(unique_ptr&&); // 右辺値参照!
- 8. namespace std {
template<class T,
class D=default_delete<T>>
class unique_ptr;
template<class T>
struct default_delete {
// ポインタを手放す際にコレ↓を発動する
void operator()(T* p) const { delete p; }
}
}