[C++] const & constexpr

Table of Contents

개념

  • const는 일단 한번 값이 정해지면 그 때 이후로 값을 변경하려고 하면 룰 위반이라고 보기 위해 에러를 발생시키는 구문이다.
  • constexpr은 const 기능 + 컴파일 시점에 값이 정해져야 한다는 것을 명시하기 위한 구문이다.

다음의 예시를 보면 이해가 빠를 것이다.

예시

#include <iostream>

int main(void) {
	int x = 0;
	cin >> x;
	
	const int a = x;     // OK!
	constexpr int b = x; // Error!
	
	a = 10;          // Error!
	b = 20;          // Error!
	
	return 0;
}
  • const는 일단 한번 값이 정해지면 그 때 이후로 값 변경이 불가하다는 뜻
    • const int a = x; 이 부분에서는 값이 정해지는 부분이기에 에러가 나지 않음
    • a = 10; 이 부분에서는 const로 값이 정해진 상태에서 변경하려고 하기 때문에 에러가 발생
  • constexpr은 컴파일하는 시점에 값이 뭔지 알 수 없으면 에러를 발생시키기 위함
    • constexpr int b = x 이 부분에서는 컴파일하는 시점에 x 값이 어떤 값이 들어올지 알 수가 없어서 에러가 발생
    • b = 20; 이 부분에서는 const와 마찬가지로 한번 정해진 값이 변경되려고 하는 것이기 때문에 에러가 발생

Categories C++

Leave a Comment

error: Content is protected !!