2021-2-15
动态委托
动态委托可序列化,其函数可按命名查找,但其执行速度比常规委托慢。
声明动态委托
DECLARE_DYNAMIC_DELEGATE[_RetVal, …]( DelegateName ) 创建一个动态委
DECLARE_DYNAMIC_MULTICAST_DELEGATE[_RetVal, …]( DelegateName ) 创建一个动态组播委托
例:

动态委托绑定

下面为用于测试的待绑定对象的一个测试函数:


例(制造、绑定委托):


BindDynamic是一个宏,可以将待绑定函数名转为字符串,而一般的委托需要直接输入函数名的字符串
执行动态委托
通过调用委托的 Execute() 函数执行绑定到委托的函数。执行前须检查委托是否已绑定。 此操作是为了使代码更安全,因为有时委托可能含有未初始化且被后续访问的返回值和输出参数。 执行未绑定的委托在某些情况下确实可能导致内存混乱。可调用 IsBound() 检查是否可安全执行委托。 同时,对于无返回值的委托,可调用 ExecuteIfBound(),但需注意输出参数可能未初始化。

例(由另一个对象调用委托):

其他
动态委托不支持负载

本文解析了2021年动态委托在C++中的特性,包括其声明、绑定过程,以及如何通过Execute()函数执行并确保安全性。重点介绍了动态委托的序列化能力、命名查找功能和相对较低的执行效率。
678

被折叠的 条评论
为什么被折叠?



