1. 변수에 사용
값을 변경할 수 없게 함
const int value = 10;
value = 20; // 컴파일 에러: value는 const이므로 변경 불가
2. 포인터와 함께 사용
🔹포인터가 가리키는 값이 상수일 때 : const int*
const int value = 10;
const int* ptr = &value;
*ptr = 20; // 컴파일 에러: ptr이 가리키는 값은 변경 불가
🔹포인터 자체가 상수일 때: int* const
int value1 = 10, value2 = 20;
int* const ptr = &value1;
ptr = &value2; // 컴파일 에러: ptr은 다른 주소를 가리킬 수 없음
🔹포인터와 값 모두 상수일 때: const int* const
const int value = 10;
const int* const ptr = &value;
*ptr = 20; // 컴파일 에러: 값 변경 불가
ptr = nullptr; // 컴파일 에러: 포인터 변경 불가
3. 함수 매개변수에 사용
🔹값을 변경하지 못하게 제한
매개변수가 읽기 전용임을 보장
void PrintValue(const int value) {
// value = 20; // 컴파일 에러: value는 const
std::cout << value << std::endl;
}
🔹참조를 상수로 전달 : const&
객체를 복사하지 않고 읽기 전용으로 전달하고 싶을 때 사용
void PrintValue(const std::string& str) {
// str += " modified"; // 컴파일 에러: str은 const
std::cout << str << std::endl;
}
🔹멤버 함수에 사용
해당 함수는 객체의 멤버 데이터를 수정할 수 없음을 보장
class Example {
private:
int value;
public:
Example(int v) : value(v) {}
int GetValue() const { // const 멤버 함수
return value;
}
void SetValue(int v) {
value = v;
}
};
int main(){
const Example ex(10);
ex.GetValue(); // 가능: GetValue는 const 함수
ex.SetValue(20); // 컴파일 에러: const 객체에서 호출 불가
return 0;
}
'C++' 카테고리의 다른 글
GIT 브랜치 복구하기 (0) | 2025.02.21 |
---|---|
매개변수 전달 시 *와 & (0) | 2025.02.09 |
정적 바인딩 vs 동적 바인딩 (0) | 2025.02.09 |
자료형의 오버플로우 (0) | 2025.02.09 |
입력 예외 처리 (0) | 2025.02.09 |