870920 Menu

关于ReferenceCountedObject(引用计数)类

使用该类可防止出现野指针和内存泄露等问题,并且是线程安全的。使用流程有三:

1、继承。MyClass类继承ReferenceCountedObject引用计数对象类
class MyClass : public ReferenceCountedObject

2、类型重定义。MyClass类的类定义中添加一句类型重定义(为了编程时少敲一些字):
typedef ReferenceCountedObjectPtr Ptr;

3、声明和定义指针变量。以上两个步骤是在MyClass类中编码。类的客户端编码时,需用重定义之后的标识符Ptr来定义MyClass类的指针。而不再采取传统的MyClass*的方式。

如果不考虑线程安全,则可以使用SingleThreadedReferenceCountedObject单线程引用计数对象类。流程与上基本一致。单线程引用计数比引用计数更高效,但由于未使用原子操作的计数方式,因此非线程安全。

与引用计数技术相对应,JUCE类库还有一个WeakReference弱引用类(类模板)。该类的对象相当于一个指针, 如果所指向的堆中对象已被销毁, 则该指针自动变成nullptr。由于弱引用类的概念和使用均比较简单,此处一带而过,不再详述。