델리게이트는 C++ 오브젝트 상의 멤버 함수 호출을 안전하게 할 수 있는 방식이다.
이를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩 시킬 수 있고
이후 그 오브젝트에서 함수를 호출할 수 있다.
호출하는 곳에서 오브젝트의 유형을 몰라도 말이다!
델리게이트는 가급적이면 참조 전달을 사용해야하는데, 이는 값으로 전달이 가능은 하나 heap에 메모리를 할당해야하기 때문이다.
델리게이트 선언은 제공되어 있는 선언 매크로 중 하나로 이루어진다.
사용되는 매크로는 바인딩되는 함수의 시그니처에 따라 결정된다.
DECLARE_멀티캐스트, 다이나믹_DELEGATE_값 반환_파라미터 갯수
(리턴 타입, 델리게이트 이름, 파라미터들 ...)
이 항목들의 조합으로 델리게이트 시그너처가 지원된다.
Bind()
: 기존 델리게이트 오브젝트에 바인딩BindStatic
: raw C++ 포인터 글로벌 함수 바인딩BindRaw()
: raw C++ 포인터 바인딩BindSP()
: SharedPointer 기반 멤버 함수 바인딩BindUObject()
: UObject 기반 멤버 함수 바인딩UnBind()
: 바인딩 해제