본문 바로가기
<CPP>/BASIC

10. 상수

by CodeGrimie 2021. 1. 13.

항상 고정된 수, 상수

▼ CPP에서 상수 예제

int main()
{
    constexpr int CONST_INT = 4;

    CONST_INT = 6; // ERROR
    return (0);
}

상수는 이름에서도 알 수 있듯이 '항상 고정된 수'를 저장할 때 사용한다.

그렇기 때문에 한번 지정된 값을 변하지 않는 불변성을 가져야 한다.

 

CPP에서 상수는 크게 Const와 Constexpr 두개로 나뉜다.

Const(constant)

▼ CPP에서 Const 예제

#include <cstdio>

void Print(const int num)
{
    printf("%d\n", num);
}

int main()
{
    Print(4);
    return (0);
}

Const는 런타임 상수로 초깃값을 런타임에서 아는 경우 사용한다.

대부분 함수 매개인자에 사용되는데 함수가 런타임에서 호출되는 경우가 많기 때문이다.

 

주의해야 할 점은 함수를 사용할 때 매개 인자가 함수 내에서 불변하는지를 확실히 확인해야 한다.

Constexpr(Constant Expression)

▼ CPP에서 Constexpr 예제

#include <cstdio>

constexpr static int CONSTEXPR_INT = 4;

int main()
{
    printf("CONSTEXPR_INT : %d\n", CONSTEXPR_INT);
    return (0);
}

Constexpr은 확장 상수라는 의미로 초깃값을 컴파일 타임에서 아는 경우 사용한다.

 

게임에서도 불변성을 유지해야하는 데이터를 처리할 때 이 constexpr를 사용한다.

가령 게임 내에서 할당할 메모리를 미리 만드는 '풀 메모리'를 만들 때 얼마 크기의 메모리를 할당할 것인지를 이 constexpr를 통해서 선언할 수 있다.

 

요약하자면 전역 변수로 사용할 때에는 constexpr를 쓰는게 좋다.

'<CPP> > BASIC' 카테고리의 다른 글

12. 열거형(Enum)  (0) 2021.01.14
11. 고정 크기 배열(Array)  (0) 2021.01.13
9. 변수 삼형제  (0) 2021.01.12
8. 함수  (0) 2021.01.12
7. 조건 체크  (0) 2021.01.11

댓글