IRC_SERVER
By @hyunjunk (hyunjun2372@gmail.com)
|
Shared pointer custom implementation for C++98 standard. More...
#include <SharedPtr.hpp>
Public Member Functions | |
SharedPtr () | |
SharedPtr (T *ptr) | |
SharedPtr (const SharedPtr< T > &rhs) | |
SharedPtr (detail::ControlBlock< T > *controlBlock) | |
Create a shared pointer from the control block. | |
~SharedPtr () | |
SharedPtr< T > & | operator= (const SharedPtr< T > &rhs) |
T & | operator* () const |
T * | operator-> () const |
bool | operator== (const SharedPtr< T > &rhs) const |
bool | operator== (const T *rhs) const |
bool | operator!= (const T *rhs) const |
bool | operator!= (const SharedPtr< T > &rhs) const |
T * | Get () const |
void | Reset () |
size_t | UseCount () const |
void | Swap (SharedPtr< T > &rhs) |
detail::ControlBlock< T > * | GetControlBlock () const |
Get the control block of the shared pointer. | |
Private Attributes | |
detail::ControlBlock< T > * | mControlBlock |
Friends | |
class | WeakPtr< T > |
Shared pointer custom implementation for C++98 standard.
Example usage:
T | Type of the object to be managed by the shared pointer. (Not support Array type. e.g. int[], char[]) |
|
inline |
|
inline |
|
inline |
|
inlineexplicit |
Create a shared pointer from the control block.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get the control block of the shared pointer.
SharedPtr는 SharedPtr이나 WeakPtr 서로에 대한 복사만 가능하다.
SharedPtr::Get() 등을 통해 직접적으로 데이터의 포인터를 얻은 뒤 해당 주소로 SharedPtr을 생성한다면
기존과 같은 데이터를 공유하는 것이 아닌 완전히 새로운 데이터와 ControlBlock를 생성하게 된다.
하지만, 데이터의 주소가 아닌 ControlBlock의 주소를 얻은 뒤 이를 통해 SharedPtr을 생성한다면
기존의 데이터와 ControlBlock을 공유할 수 있다.
특수한 경우에만 사용해야 하며, ControlBlock의 주소를 얻고 이를 통해 SharedPtr을 생성할 때 까지
해당 ControlBlock이 삭제되지 않도록 주의해야 한다.
|
friend |
|
private |