티스토리 뷰

상수표현식 (constexpr) 은 인라인 함수와 동일한 기능을 제공한다.추가로 컴파일 단계에서 프로그래밍을 최적화하여 반환되는 값이 상수가 되는 식이다.

 

constexpr 지정자 특징

▶ constexpr 로 선언된 변수는 const 지정자처럼 변수를 상수로 만든다. constexpr 로 선언된 변수의 데이터를 수정하려고 하면, 컴파일러 에러를 발생시킨다.

▶ 함수 및 클래스의 생성자에도 constexpr 를 적용할 수 있다. 함수에 붙이면 inline 함수처럼 인식된다.

 

사용불가

▷ goto 문

label 문 , switch-case 문

try-catch 문

static_assert 선언문

using 지시문/선언문

typedef 선언문

NULL

리터럴이 아닌 함수 내부에서 지역 변수 또는 정적 변수의 선언문

 


constexpr 사용

constexpr 데이터타입 함수이름(인수)
constexpr 데이터타입 상수이름 = 식
constexpr 생성자(인수)

 

constexpr 지정자를 사용하는 함수는 재귀함수에서 많이 사용한다.

 


constexpr / const 차이점

 

※ constexpr

- 컴파일하는 시점부터 상수로 인식됨.

- 함수보다 빠른 성능.

- 일반 변수, 함수, 클래스의 생성자까지 사용이 가능함.

 

- 변수에 적용 : 상수를 의미

- 함수에 적용 : 함수는 리터럴을 반환하는 것으로 인식

- 생성자에 적용 : 모든 멤버 변수는 초기화되어 있는 상수로 인식

 

 

※ const

- 프로그램이 실행되는 시점에 상수로 인식됨.

- 안전성을 확보하기 위해 사용함.

- 변수와 함께 사용되어 상수로 인식됨.

- 본문에 적용하여 클래스 내부 멤버 변수의 수정을 금지하는 기능을 제공함.

 

 


'시작하자! C++17 프로그래밍' 책을 기반으로 작성하였습니다.

'C++' 카테고리의 다른 글

C++ : 11 시작  (0) 2023.09.17
댓글