Files
XCEngine/docs/api/core/refcounted/refcounted.md

58 lines
1.4 KiB
Markdown
Raw Normal View History

# RefCounted
**命名空间**: `XCEngine::Core`
**类型**: `class`
2026-03-20 02:35:07 +08:00
**头文件**: `XCEngine/Core/RefCounted.h`
**描述**: 引用计数基类,提供线程安全的引用计数生命周期管理。
## 概述
`RefCounted` 是一个简单的引用计数基类。当引用计数归零时,对象会自动删除。它提供了 `AddRef``Release` 方法,线程安全地管理引用计数。
## 公共方法
| 方法 | 描述 |
|------|------|
2026-03-20 02:35:07 +08:00
| [`RefCounted()`](refcounted.md) | 构造函数,初始引用计数为 1 |
| [`~RefCounted()`](refcounted.md) | 虚析构函数 |
| [`AddRef()`](AddRef.md) | 增加引用计数 |
| [`Release()`](Release.md) | 减少引用计数(归零时自动 delete this |
| [`GetRefCount()`](GetRefCount.md) | 获取当前引用计数 |
## 使用示例
```cpp
2026-03-20 02:35:07 +08:00
#include <XCEngine/Core/RefCounted.h>
#include <cstdio>
class MyObject : public XCEngine::Core::RefCounted {
public:
2026-03-20 02:35:07 +08:00
MyObject() { }
virtual ~MyObject() { }
2026-03-20 02:35:07 +08:00
void DoSomething() { }
};
2026-03-20 02:35:07 +08:00
int main() {
MyObject* obj = new MyObject();
printf("After create: %u\n", obj->GetRefCount());
obj->AddRef();
printf("After AddRef: %u\n", obj->GetRefCount());
obj->Release();
printf("After Release: %u\n", obj->GetRefCount());
obj->Release();
return 0;
}
```
## 相关文档
- [Core 模块总览](../core.md) - 返回模块总览
- [SmartPtr](../smartptr/smartptr.md) - 智能指针