A base class which provides methods for reference-counting.
More...
#include <juce_ReferenceCountedObject.h>
A base class which provides methods for reference-counting.
To add reference-counting to a class, derive it from this class, and use the ReferenceCountedObjectPtr class to point to it.
e.g.
{
void foo();
};
MyClass::Ptr p = new MyClass();
MyClass::Ptr p2 = p;
p = nullptr;
p2->foo();
A smart-pointer class which points to a reference-counted object.
Definition juce_ReferenceCountedObject.h:259
A base class which provides methods for reference-counting.
Definition juce_ReferenceCountedObject.h:78
Once a new ReferenceCountedObject has been assigned to a pointer, be careful not to delete the object manually.
This class uses an Atomic<int> value to hold the reference count, so the reference count can be updated on multiple threads. Note that whilst it's thread-safe to create and delete a ReferenceCountedObjectPtr to a ReferenceCountedObject shared between threads, it's not thread-safe to modify or swap the ReferenceCountedObject.
For a faster but non-thread-safe version, use SingleThreadedReferenceCountedObject instead.
- See also
- ReferenceCountedObjectPtr, ReferenceCountedArray, SingleThreadedReferenceCountedObject
@tags{Core}
◆ ReferenceCountedObject() [1/3]
| juce::ReferenceCountedObject::ReferenceCountedObject |
( |
| ) |
|
|
protecteddefault |
Creates the reference-counted object (with an initial ref count of zero).
◆ ReferenceCountedObject() [2/3]
Copying from another object does not affect this one's reference-count.
◆ ReferenceCountedObject() [3/3]
Copying from another object does not affect this one's reference-count.
◆ ~ReferenceCountedObject()
| virtual juce::ReferenceCountedObject::~ReferenceCountedObject |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ decReferenceCount()
| void juce::ReferenceCountedObject::decReferenceCount |
( |
| ) |
|
|
inlinenoexcept |
Decreases the object's reference count.
If the count gets to zero, the object will be deleted.
References jassert.
◆ decReferenceCountWithoutDeleting()
| bool juce::ReferenceCountedObject::decReferenceCountWithoutDeleting |
( |
| ) |
|
|
inlinenoexcept |
Decreases the object's reference count.
If the count gets to zero, the object will not be deleted, but this method will return true, allowing the caller to take care of deletion.
References jassert.
◆ getReferenceCount()
| int juce::ReferenceCountedObject::getReferenceCount |
( |
| ) |
const |
|
inlinenoexcept |
Returns the object's current reference count.
◆ incReferenceCount()
| void juce::ReferenceCountedObject::incReferenceCount |
( |
| ) |
|
|
inlinenoexcept |
Increments the object's reference count.
This is done automatically by the smart pointer, but is public just in case it's needed for nefarious purposes.
◆ operator=() [1/2]
Copying from another object does not affect this one's reference-count.
◆ operator=() [2/2]
Copying from another object does not affect this one's reference-count.
◆ resetReferenceCount()
| void juce::ReferenceCountedObject::resetReferenceCount |
( |
| ) |
|
|
inlineprotectednoexcept |
Resets the reference count to zero without deleting the object.
You should probably never need to use this!
◆ ContainerDeletePolicy< ReferenceCountedObject >
◆ refCount
| Atomic<int> juce::ReferenceCountedObject::refCount { 0 } |
|
private |
The documentation for this class was generated from the following file: