void 함수 특징

DevBison·2025년 11월 28일

C++에서 void 함수는 언제 쓰는가?

한 줄 요약

결과값을 돌려줄 필요가 없을 때 쓰는 함수가 void 함수다.
즉, "일만 하고 끝나는 함수".


void 함수가 필요한 순간

함수를 만들 때는 보통 두 가지 경우가 있다.

  1. 행동(Action)을 수행하는 함수
  2. 값(Value)을 계산해서 돌려주는 함수

여기서 기준은 간단하다.

  • 값이 필요 없다 → void
  • 값을 받아서 써야 한다 → void 아님 (int, float, bool 등)

간단 예시로 이해하기

1) 행동만 하고 끝나는 함수 → void

void PrintHello()
{
    cout << "Hello!" << endl;
}
  • 화면 출력이라는 행동만 하고 끝.
  • 호출한 쪽에서 받아야 할 값이 없음.

사용:

PrintHello();   // 실행만 하면 됨

2) 계산한 값을 받아야 하는 함수 → void 아님

int Add(int x, int y)
{
    return x + y;
}

사용:

int result = Add(2, 3);
// result에 5가 담김

값이 필요하기 때문에 절대 void일 수 없음.


언리얼 스타일 예시

문 여는 함수 → void

void OpenDoor()
{
    PlayDoorOpenAnimation();
    bIsOpen = true;
}

호출하는 쪽에서는 단지:

OpenDoor();
  • 문을 열라는 “행동”만 필요
  • 문이 열린 후 어떤 숫자나 값이 필요한 것은 아님
    그래서 void.

void인지 아닌지 판단하는 기준(매우 중요)

함수 하나 만들기 전에 아래 두 가지를 자신에게 물어보자.

  1. “이 함수가 만든 값을 호출한 쪽에서 바로 써야 하나?”
    : void 쓰면 안 됨.
    (반환 타입을 int, float, bool, struct, FVector, AActor* 등으로 지정)

  2. “그냥 이 함수가 어떤 행동만 하면 되고,
    결과값은 필요 없나?”

    : 이때가 바로 void.

한 줄 정리

  • 결과값이 필요 없다 → void
  • 결과값이 필요하다 → void 말고 그 값의 타입

잘못 설계된 void 예시

값을 계산해놓고 반환하지 않으면 이런 문제가 생긴다.

void MakeDamage(int Base, float Rate)
{
    int Damage = Base * Rate; // 계산함
    // 하지만 아무것도 돌려주지 않음
}

이러면 호출하는 쪽은 Damage를 쓸 수 없음.

개선 버전:

int MakeDamage(int Base, float Rate)
{
    return Base * Rate;
}

마무리

정리하면 정말 간단하다.

  • 돌려줄 값이 없으면 void
  • 돌려줄 값이 있으면 그 데이터 타입

게임 개발, 언리얼 C++에서도 이 기준 그대로 적용된다.
특히 “행동 중심” 기능(문 열기, 체력 깎기, UI 보여주기 등)은 대부분 void이고,
“값 가져오기” 기능은 반환 타입이 있다.

profile
응애 개발자

0개의 댓글