This class holds a pointer which is automatically deleted when this object goes out of scope. More...
Public Member Functions | |
| ScopedPointer () noexcept | |
| Creates a ScopedPointer containing a null pointer. | |
| ScopedPointer (ObjectType *const objectToTakePossessionOf) noexcept | |
| Creates a ScopedPointer that owns the specified object. | |
| ScopedPointer (ScopedPointer &objectToTransferFrom) noexcept | |
| Creates a ScopedPointer that takes its pointer from another ScopedPointer. | |
| ~ScopedPointer () | |
| Destructor. | |
| ScopedPointer & | operator= (ScopedPointer &objectToTransferFrom) |
| Changes this ScopedPointer to point to a new object. | |
| ScopedPointer & | operator= (ObjectType *const newObjectToTakePossessionOf) |
| Changes this ScopedPointer to point to a new object. | |
| operator ObjectType * () const noexcept | |
| Returns the object that this ScopedPointer refers to. | |
| ObjectType & | operator* () const noexcept |
| Returns the object that this ScopedPointer refers to. | |
| ObjectType * | operator-> () const noexcept |
| Lets you access methods and properties of the object that this ScopedPointer refers to. | |
| ObjectType * | release () noexcept |
| Removes the current object from this ScopedPointer without deleting it. | |
| void | swapWith (ScopedPointer< ObjectType > &other) noexcept |
| Swaps this object with that of another ScopedPointer. | |
This class holds a pointer which is automatically deleted when this object goes out of scope.
Once a pointer has been passed to a ScopedPointer, it will make sure that the pointer gets deleted when the ScopedPointer is deleted. Using the ScopedPointer on the stack or as member variables is a good way to use RAII to avoid accidentally leaking dynamically created objects.
A ScopedPointer can be used in pretty much the same way that you'd use a normal pointer to an object. If you use the assignment operator to assign a different object to a ScopedPointer, the old one will be automatically deleted.
A const ScopedPointer is guaranteed not to lose ownership of its object or change the object to which it points during its lifetime. This means that making a copy of a const ScopedPointer is impossible, as that would involve the new copy taking ownership from the old one.
If you need to get a pointer out of a ScopedPointer without it being deleted, you can use the release() method.
| ScopedPointer< ObjectType >::ScopedPointer | ( | ) |
Creates a ScopedPointer containing a null pointer.
| ScopedPointer< ObjectType >::ScopedPointer | ( | ObjectType *const | objectToTakePossessionOf ) |
Creates a ScopedPointer that owns the specified object.
| ScopedPointer< ObjectType >::ScopedPointer | ( | ScopedPointer< ObjectType > & | objectToTransferFrom ) |
Creates a ScopedPointer that takes its pointer from another ScopedPointer.
Because a pointer can only belong to one ScopedPointer, this transfers the pointer from the other object to this one, and the other object is reset to be a null pointer.
| ScopedPointer< ObjectType >::~ScopedPointer | ( | ) |
Destructor.
This will delete the object that this ScopedPointer currently refers to.
| ScopedPointer& ScopedPointer< ObjectType >::operator= | ( | ScopedPointer< ObjectType > & | objectToTransferFrom ) |
Changes this ScopedPointer to point to a new object.
Because a pointer can only belong to one ScopedPointer, this transfers the pointer from the other object to this one, and the other object is reset to be a null pointer.
If this ScopedPointer already points to an object, that object will first be deleted.
| ScopedPointer& ScopedPointer< ObjectType >::operator= | ( | ObjectType *const | newObjectToTakePossessionOf ) |
Changes this ScopedPointer to point to a new object.
If this ScopedPointer already points to an object, that object will first be deleted.
The pointer that you pass is may be null.
| ScopedPointer< ObjectType >::operator ObjectType * | ( | ) | const |
Returns the object that this ScopedPointer refers to.
| ObjectType& ScopedPointer< ObjectType >::operator* | ( | ) | const |
Returns the object that this ScopedPointer refers to.
| ObjectType* ScopedPointer< ObjectType >::operator-> | ( | ) | const |
Lets you access methods and properties of the object that this ScopedPointer refers to.
| ObjectType* ScopedPointer< ObjectType >::release | ( | ) |
Removes the current object from this ScopedPointer without deleting it.
This will return the current object, and set the ScopedPointer to a null pointer.
| void ScopedPointer< ObjectType >::swapWith | ( | ScopedPointer< ObjectType > & | other ) |
Swaps this object with that of another ScopedPointer.
The two objects simply exchange their pointers.