상세 컨텐츠

본문 제목

Constant Expression : constexpr 키워드에 대하여 (하드코딩, 메모리 관리)

C++/개념공부

by J2on 2023. 8. 23. 02:36

본문

요 며칠간 고민했던 것은

하드코딩 VS 멤버변수 선언

이었다.

풀어 이야기해보면 하드코딩을 지양하기 위해 멤버변수 하나를 선언하는 것이 과연 옳은 습관일까에 대하여 고민했다.

 

코드의 가독성을 위해 멤버변수 하나 정도의 메모리 공간은 괜찮지 않을까 생각했지만,

이런 Local Variable들이 모이면 유의미한 차이가 생길 것 같았다.

 

이 부분에 대해 구글링과 GPT를 이용해보았지만 후련한 답은 얻지 못했다.

 

그리고 오늘 친한 형에게 constexpr에 대해 알게 되었다.

constexpr은 컴파일 단계에서 변수를 상수로 대체한다.

변수로써 선언했지만, 컴파일 단계에서 상수로 대체되어 마치 하드코딩을 한 것처럼 어셈블리 단계에 들어선다.

 

때문에 프로그램 실행 중에는 메모리를 차지하지 않게 되는 것이다.

 

이것은 결국 그간 고민했던 코드 가독성과 메모리 효율까지 다 잡아낸 방법인 것이다.

 

 

숫자로 사용 시에는 static constexpr const를 함께 작성하는 경우가 많은데

static : 전역변수로 할당하여 해당 cpp파일 내에서 두루두루 사용

constexpr : 변수를 컴파일 단계에서 미리 계산한 후 상수로 대체

const : 상수 변수로써 값이 변경되지 않음.

 

때문에 내가 사용하고자 하는 Local Variable을 모두 대신할 수 있다.

'C++ > 개념공부' 카테고리의 다른 글

Deque(및 Queue, stack)의 메모리 관점에서 구현 방식  (0) 2024.02.07
C++ Smart Pointer에 대하여  (0) 2024.02.07
C++ Lvalue와 Rvalue  (0) 2024.02.07
C++ 삼항연산자 ( a > b ? 1 : 2 )  (0) 2024.02.07

관련글 더보기

댓글 영역