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 |