借助共享引用构建弱指针 使用弱指针时因为可能随时被释放,要先将弱指针转为共享指针检测有效性后再去使用,Pin()这个函数会将弱指针转为共享指针阻止对象被销毁 弱指针可以主动释放但是并不会影响引用计数,多数情况下意义不大。 Tips: 1.构建自定义类需要使用F开头。 2.智能指针声明时都是对象型数据,不能是指针型...
(*Ftc02).TestFun();//返回cosnt 引用 ,禁止将对象主动释放constFTestClass& Ftc03 =Ftc02.Get();//和共享指针转换//共享引用支持隐式转换为共享指针,由于共享引用是安全的,所以转换是隐式转换TSharedPtr<FTestClass> Ftc04 =Ftc02;//从共享指针转换到共享引用是不安全的,所以需要调用TS函数TSharedRef<F...
UE_LOG(LogTemp, Warning, TEXT("FTestAChild 析构")); } };UFUNCTION(BlueprintCallable) void MyTest();void MyTest() { //共享指针 { TSharedPtr<FTestA, ESPMode::NotThreadSafe> SharedPtr = MakeShareable(new FTestA); //创建时SharedReferenceCount=1 ...
voidATaskActor::TaskSharedRefAndPtr(){TSharedRef<TaskA>Task_b(newTaskA());//先new一个b。Task_a=Task_b;//1、普通指针转共享指针;TaskA*NewTaskA=newTaskA();//先创建一个普通指NewTaskA。Task_a=MakeShareable(NewTaskA);//2、共享指针转引用是不安全的;如果断言出现问题就会崩溃,比如Object是...
共享指针是虚幻引擎中的一种常用智能指针类型,它用于管理对特定对象的引用。共享指针有三种声明方式,可以用于指向实例内函数,并能够获取引用个数。通过手动释放共享指针的方式,可以控制对象的生命周期。共享引用则用于传递数据,不能为NULL,且设计目的是避免主动释放。它只能被动减少引用计数,直到生命周期...
BeginPlay(){Super::BeginPlay();//用共享指针去创建一个ClassB,用共享指针去创建它,里面会创建ClassB;TSharedPtr<ClassB>NewClassB=MakeShareable(newClassB());//1、执行之后先创建一个共享指针在初始化;NewClassB->init();//直接初始化,初始化之后会进行绑定,生命走完会自动清掉,析构函数的delete可以删掉...