- memory[meta header]
- std[meta namespace]
- shared_ptr[meta class]
- function[meta id-type]
- cpp11[meta cpp]
void reset() noexcept; // (1)
template <class Y>
void reset(Y* p); // (2)
template <class Y, class Deleter>
void reset(Y* p, Deleter d); // (3)
template <class Y, class Deleter, class Allocator>
void reset(Y* p, Deleter d, Allocator a); // (4)
リソースの所有権を放棄し、新たなリソースの所有権を設定する。
- (1) :
shared_ptr
().
swap
(*this)
- (2) :
shared_ptr
(p).
swap
(*this)
- (3) :
shared_ptr
(p, d).
swap
(*this)
- (4) :
shared_ptr
(p, d, a).
swap
(*this)
なし
#include <memory>
int main()
{
std::shared_ptr<int> p1(new int(3));
std::shared_ptr<int> q1 = p1;
// (1)
// p1が共有している所有権を放棄する。
// q1がまだ所有権を持っているので、リソースは解放されない。
p1.reset();
std::shared_ptr<int> p2(new int(3));
std::shared_ptr<int> q2 = p2;
// (2)
// p2が現在共有している所有権を放棄し、新たなリソースの所有権を設定する。
// p2とq2がそれぞれ、異なるリソースを所有することになる。
p2.reset(new int(2));
}
- reset[color ff0000]
- C++11
- GCC: 4.3.6 [mark verified]
- Clang: 3.0 [mark verified]
- ICC: ?
- Visual C++: 2008 (TR1) [mark verified], 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]