시그니처(Signature)란?
함수를 구분하기 위한 함수의 형태
일반적으로 함수의 이름과 매개변수(인자)의 개수, 타입을 의미한다.
예시
void Attack();시그니처
Attack()void Attack(int Damage);시그니처
Attack(int)void Attack(float Damage);시그니처
Attack(float)위 세 함수는 이름은 모두 Attack이지만 시그니처가 다르므로 서로 다른 함수로 취급된다.
왜 중요할까?
함수를 호출할 때 어떤 함수를 실행해야 하는지 컴파일러가 판단하기 위해 사용한다.
Attack(10);↓
Attack(int)함수 호출
언리얼에서
Delegate에 함수를 등록할 때도 시그니처가 일치해야 한다.
SphereComp->OnComponentEndOverlap.AddDynamic(
this,
&ACoinItem::OnItemEndOverlap
);이 경우 OnItemEndOverlap()의 매개변수 개수와 타입이 Delegate가 요구하는 형태와 정확히 같아야 한다.
한 줄 정리
시그니처(Signature)는 함수를 구분하기 위한 형태이며, 함수 이름과 매개변수의 개수·타입으로 결정된다.