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

复制指针:

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

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

firstSharedObject.GetSharedReferenceCount();

三种方法解除引用:

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

检查指针有效性:

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

你可能感兴趣的:(技术笔记)