This class automatically manages object's number of references. Constructor increases the number of references. Destructor decreases number of references. The object should be dynamically created using new operator.
This class behaves the same as a simple pointer to the object. It define dereference operators and compare operators (== и !=). The smart pointer can be "null".
The type T can be derived from SharedObj class. In this case the SharedPtr class has no additional costs. Otherwise for each object the reference counter will be dynamically created.
T | The object type. |
typedef inherited::reference reference |
Reference type.
typedef inherited::pointer pointer |
Pointer type.
typedef pointer(ThisType::*) unspecified_bool_type() const |
Unspecified bool type.
SharedPtr | ( | ) | [inline] |
Create "null" pointer.
This constructor creates "null" pointer.
SharedPtr<MyClass> p;
f(*p); // null pointer exception
Attach simple pointer.
This constructor increases (*p) object's number of references.
[in] | ptr | Simple pointer. |
Copy construction.
This constructor increases (*x) object's number of references.
[in] | other | Smart pointer. |
~SharedPtr | ( | ) | [inline] |
Destruction.
The destructor decreases object's number of references. So if there is no more references, object will be destroyed.
Assign smart pointer.
Если автоматический указатель ссылался на объект, то у старого объекта уменьшается количество ссылок.
Запоминает указатель на новый объект &*x, и если он не является нулевым, то увеличивает у нового объекта количество ссылок.
[in] | x | Smart pointer. |
reference operator * | ( | ) | const [inline] |
Ссылка на объект.
Метод разъименовывает умный указатель. Если указатель нулевой, произойдет обращение по нулевому адресу.
pointer operator-> | ( | ) | const [inline] |
Указатель на объект.
Метод разъименовывает умный указатель.
pointer get | ( | ) | const [inline] |
Проверить на "нулевой" указатель.
Метод проверяет является ли умный указатель нулевым.
bool unique | ( | ) | const [inline] |
Проверить уникальность указателя.
Метод проверяет, является ли текущий автоматический указатель уникальным, т.е. на хранимый объект существует только одна ссылка.
operator unspecified_bool_type | ( | ) | const [inline] |
Check for non "NULL".
bool operator! | ( | ) | const [inline] |
Check for "NULL".
void swap | ( | ThisType & | other | ) | [inline] |
Swap two pointers.