alternative Standard Libary  0.29.8
std::shared_ptr< T > Template-Klassenreferenz

#include <shared_ptr.hpp>

Öffentliche Typen

using value_type = T
 
using ref_type = long
 
using const_value_type = const value_type
 
using pointer = value_type *
 
using self_type = shared_ptr< value_type >
 

Öffentliche Methoden

 shared_ptr (pointer ptr)
 
 shared_ptr (const self_type &sp)
 
 ~shared_ptr ()
 
pointer release ()
 
void reset (pointer pValue=0)
 
pointer get () const
 
ref_type ref ()
 
void swap (self_type &b)
 
self_typeoperator= (self_type &sp)
 
pointer operator-> () const
 
const_value_typeoperator* ()
 
 operator bool ()
 

Ausführliche Beschreibung

template<typename T>
class std::shared_ptr< T >

Dokumentation der benutzerdefinierten Datentypen

◆ const_value_type

template<typename T >
using std::shared_ptr< T >::const_value_type = const value_type

◆ pointer

template<typename T >
using std::shared_ptr< T >::pointer = value_type*

◆ ref_type

template<typename T >
using std::shared_ptr< T >::ref_type = long

◆ self_type

template<typename T >
using std::shared_ptr< T >::self_type = shared_ptr<value_type>

◆ value_type

template<typename T >
using std::shared_ptr< T >::value_type = T

Beschreibung der Konstruktoren und Destruktoren

◆ shared_ptr() [1/2]

template<typename T >
std::shared_ptr< T >::shared_ptr ( pointer  ptr)
inlineexplicit
49  : _m_ptr(ptr),
50  _m_ref(new atomic<ref_type>(1)) { }

◆ shared_ptr() [2/2]

template<typename T >
std::shared_ptr< T >::shared_ptr ( const self_type sp)
inline
52  {
53  if (++(*_m_ref) != 1) {
54  _m_ptr = sp._m_ptr;
55  }
56  else
57  {
58  //tried to copy a shared pointer targeted for deletion
59  }
60  }

◆ ~shared_ptr()

template<typename T >
std::shared_ptr< T >::~shared_ptr ( )
inline
62  {
63  if (--(*_m_ref) == 0) {
64  delete _m_ptr;
65  delete _m_ref;
66  }
67  }

Dokumentation der Elementfunktionen

◆ get()

template<typename T >
pointer std::shared_ptr< T >::get ( ) const
inline
79  {
80  return static_cast<T*>(_m_ptr);
81  }

◆ operator bool()

template<typename T >
std::shared_ptr< T >::operator bool ( )
inline
104  {
105  return _m_ptr != 0;
106  }

◆ operator*()

template<typename T >
const_value_type& std::shared_ptr< T >::operator* ( )
inline
100  {
101  assert(get() != 0);
102  return *this->get();
103  }

◆ operator->()

template<typename T >
pointer std::shared_ptr< T >::operator-> ( ) const
inline
96  {
97  assert(get() != 0);
98  return this->get();
99  }

◆ operator=()

template<typename T >
self_type& std::shared_ptr< T >::operator= ( self_type sp)
inline
90  {
91  release();
92  _m_ptr = sp._m_ptr;
93  _m_ref = sp._m_ref;
94  return *this;
95  }
pointer release()
Definition: shared_ptr.hpp:68

◆ ref()

template<typename T >
ref_type std::shared_ptr< T >::ref ( )
inline
83  {
84  return _m_ref->get();
85  }
value_type get()
Definition: atomic.hpp:61

◆ release()

template<typename T >
pointer std::shared_ptr< T >::release ( )
inline
68  {
69  pointer __px = this->get();
70  if (--(*_m_ref) == 0) {
71  delete _m_ptr;
72  delete _m_ref;
73  }
74  return __px;
75  }
value_type * pointer
Definition: shared_ptr.hpp:46

◆ reset()

template<typename T >
void std::shared_ptr< T >::reset ( pointer  pValue = 0)
inline
77  { self_type(pValue).swap(*this); }
shared_ptr< value_type > self_type
Definition: shared_ptr.hpp:47

◆ swap()

template<typename T >
void std::shared_ptr< T >::swap ( self_type b)
inline
86  {
87  std::swap<value_type*>(_m_ptr, b._m_ptr);
88  std::swap<atomic<ref_type>*>(_m_ref, b._m_ref);
89  }

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: