결과값을 돌려줄 필요가 없을 때 쓰는 함수가 void 함수다.
즉, "일만 하고 끝나는 함수".
함수를 만들 때는 보통 두 가지 경우가 있다.
여기서 기준은 간단하다.
void PrintHello()
{
cout << "Hello!" << endl;
}
사용:
PrintHello(); // 실행만 하면 됨
int Add(int x, int y)
{
return x + y;
}
사용:
int result = Add(2, 3);
// result에 5가 담김
값이 필요하기 때문에 절대 void일 수 없음.
void OpenDoor()
{
PlayDoorOpenAnimation();
bIsOpen = true;
}
호출하는 쪽에서는 단지:
OpenDoor();
함수 하나 만들기 전에 아래 두 가지를 자신에게 물어보자.
“이 함수가 만든 값을 호출한 쪽에서 바로 써야 하나?”
→ 예: void 쓰면 안 됨.
(반환 타입을 int, float, bool, struct, FVector, AActor* 등으로 지정)
“그냥 이 함수가 어떤 행동만 하면 되고,
결과값은 필요 없나?”
→ 예: 이때가 바로 void.
값을 계산해놓고 반환하지 않으면 이런 문제가 생긴다.
void MakeDamage(int Base, float Rate)
{
int Damage = Base * Rate; // 계산함
// 하지만 아무것도 돌려주지 않음
}
이러면 호출하는 쪽은 Damage를 쓸 수 없음.
개선 버전:
int MakeDamage(int Base, float Rate)
{
return Base * Rate;
}
정리하면 정말 간단하다.
게임 개발, 언리얼 C++에서도 이 기준 그대로 적용된다.
특히 “행동 중심” 기능(문 열기, 체력 깎기, UI 보여주기 등)은 대부분 void이고,
“값 가져오기” 기능은 반환 타입이 있다.