0. const란

  • 변수를 상수화하기 위한 키워드
  • 쓰이는 위치에 따라 의미가 달라짐

 

1. 포인터

  • 포인터 변수엔 3가지 위치가 있을 수 있음
const int* pa; //pa가 가리키는 원본을 읽기 전용으로 만듬
int const * pa; //위와 마찬가지, 스타일의 차이
int * const pa; //pa는 현재 가리키는 주소를 바꿀 수 없음, 원본 읽기, 쓰기 가능

 

2. 래퍼런스

  • 래퍼런스는 * const의 의미가 포함된 키워드임
  • 가리키고 있던 대상을 바꿀 수 없다는 뜻
const int& ra; //ra가 가리키는 원본을 읽기 전용으로 만듬
int const& ra; //위와 마찬가지, 스타일의 차이
//* const의 의미를 가지기에 포인터에서 주소를 못 바꾸게 하는 const는 불가능, 구식 문법

 

3. 멤버

  • 클래스의 const 키워드가 붙은 멤버 함수는 멤버 변수의 수정이 불가능함
class A
{
public:
void Test() const
{
a = 20; //error
}

int a = 10;
}

 

추가, constexpr

  • const는 컴파일 타임에 값이 정해지지 않아도 되지만
  • constexpr은 컴파일 타임에 값이 정해져야 함
 
void Test(int Num)
{
int a = 10;
const int b = a; //가능
constexpr int c = a; //불가능
}

'C++ > 키워드 정리' 카테고리의 다른 글

키워드 정리 [6] - 함수 호출 규약  (0) 2023.12.01
키워드 정리 [5] - 동적 할당  (1) 2023.12.01
키워드 정리 [4] - 구조체  (1) 2023.12.01
키워드 정리 [3] - 매크로  (1) 2023.12.01
키워드 정리 [1] - 변수  (0) 2023.12.01

+ Recent posts