티스토리 뷰

 C++에서 클래스 멤버 함수의 `const` 버전을 추가하는 경우는 주로 해당 함수가 객체의 상태를 변경하지 않음을 명시하고 싶을 때입니다. 

 

이는 객체의 멤버 변수를 수정하지 않는 "읽기 전용" 함수를 나타내며, 이를 통해 코드의 의도를 더 명확하게 하고, 잠재적 오류를 줄일 수 있습니다.



`const` 멤버 함수는 다음과 같은 상황에서 유용합니다:

1. 읽기 전용 접근 보장: `const` 함수는 객체의 멤버 변수를 변경할 수 없습니다. 이로 인해 객체의 상태를 변경하지 않고 정보를 읽거나 계산만 수행하는 함수를 명확하게 표현할 수 있습니다.
    
2. `const` 객체 사용: `const`로 선언된 객체는 오직 `const` 멤버 함수만 호출할 수 있습니다. 따라서, 객체가 변경되지 않아야 하는 상황에서 `const` 멤버 함수를 제공하면, 이 객체를 안전하게 사용할 수 있습니다.
    
3. 함수 오버로딩: 같은 이름의 함수를 `const`와 비-`const` 버전으로 오버로딩할 수 있습니다. 이를 통해 `const` 객체와 비-`const` 객체 모두에서 해당 함수를 사용할 수 있으며, 객체의 `const` 여부에 따라 적절한 함수가 호출됩니다.
    
4. 인터페이스 안정성: `const` 멤버 함수를 사용하면 클래스의 인터페이스가 안정적으로 유지됩니다. 사용자는 객체의 상태가 변경되지 않을 것이라고 기대할 수 있으며, 이는 코드의 가독성과 유지보수성을 향상시킵니다.
    

예시 코드:

T& operator[](int n) {
    return data[n];
}

const T& operator[](int n) const {
    return data[n];
}

 

반응형
Comments