C++

C++의 캐스팅 - const_cast

monstro 2024. 4. 15. 00:18
728x90
반응형

C++ 캐스팅의 마지막 파트인 const_cast입니다.

구성은 다음과 같습니다.

 

  • static_cast
  • dynamic_cast
  • reinterpret_cast
  • const_cast

1) const_cast란?

const_cast에 대해 알기 이전에 const 키워드가 무슨 역할을 수행하는지 알아야 합니다.

https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/const

 

const 키워드 - C# 참조 - C#

const 키워드 - C# 참조

learn.microsoft.com

 

설계자들은 상수 필드나 지역 상수를 만들기 위해 const 키워드를 사용합니다.

상수를 만들기 위해서는 define을 사용해 매크로를 만들 수도 있고,

enum 구조체나 enum class를 활용해 열거형을 만들 수도 있습니다.

 

그리고 이러한 상수의 가장 큰 특징은 위의 공식 문서에서도 나와 있듯이,

상수는 변수가 아니며 수정할 수 없다는 것입니다.

 

수정(Write)할 수 없는 변수

 

2) const_cast의 동작

const_cast는 이러한 const가 수식된 상수를 수정할 수 있게 해주는 캐스팅입니다.

https://learn.microsoft.com/ko-kr/cpp/cpp/const-cast-operator?view=msvc-170

 

const_cast 연산자

자세한 정보: const_cast 연산자

learn.microsoft.com

 

즉, 공식문서에서 명시되어 있듯이

클래스에서 const, volatile __unaligned 특성을 제거 할 수 있게 해주는 것이 바로 const_cast의 역할입니다.

 

const_cast를 통해 const를 해제

 

위와 같이 const_cast를 통해 상수 num의 값을 수정해보았습니다.

const_cast를 끝으로 C++ 캐스팅 4부작이 모두 끝나게 되었습니다.

 

캐스팅을 적재적소에 맞게 사용할 줄 안다면 분명히 훌륭한 무기가 되어 줄 것입니다.

그리고 이 포스팅이 읽는 분들에게 조금이라도 도움이 되었으면 좋겠습니다.

728x90
반응형

'C++' 카테고리의 다른 글

오른값 참조  (0) 2024.04.22
얕은 복사 VS 깊은 복사  (0) 2024.04.21
C++의 캐스팅 - reinterpret_cast  (0) 2024.04.14
C++의 캐스팅 - dynamic_cast  (0) 2024.04.14
C++의 캐스팅 - static_cast  (0) 2024.04.08