Unreal Engine 4 的C++智能指针

介绍

       在UE4中可以使用C++的智能指针,虽然UE4自身已经对UObject及其派生对象有了较好的垃圾回收机制,但开发者还是会遇到使用指针管理对象的时候。我对其使用方法和类型做了一些简单总结。

智能指针的主要类型分为:TSharedPtr, TSharedRef, TWeakPtr, TAutoPtr。

其特性主要总结为几点:

  1. 类似常规C++指针;
  2. 可防止内存溢出;
  3. 有线程安全机制;
  4. 可虚拟化任何对象;
  5. 负载极小,内存占用仅是原生C++指针的两倍。

使用方式

这里主要针对TSharedPtr(共享指针)的使用进行介绍

声明一个测试类为MyClass:

Class MyClass
{
    public:
        int values;
};

分配及初始化:

TSharedPtr<MyClass> emptySharedClass;	//这是一个空的共享指针
TSharedPtr<MyClass> firstSharedObject(new MyClass());	//声明并初始化了一个共享指针

复制指针:

//当复制了一个共享指针,那引用数就会增加
TSharedPtr<MyClass> anotherObject = firstSharedObject;

在内存中检查一个共享指针的引用数:

firstSharedObject.GetSharedReferenceCount();

三种方法解除引用:

firstSharedObject->values;
firstSharedObject.Get()->values;
(*firstSharedObject).values;

检查指针有效性:

firstSharedObject.IsValid()
或者:
firstSharedObject.Get() != nullptr

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值