본문 바로가기

PL/C & C++

[C++] const_cast

 

  • const_cast<new_type>(expression)
  • const_cast<바꿀타입>(대상)

  • const_cast는 포인터(pointer) 또는 참조형(reference)의 상수성(const)를 잠깐 제거해주는데 사용합니다.
  • const_cast는 volatile 키워드를 잠깐 제거해 주는 데에도 사용이 가능합니다.
  • 다른 캐스트 연산자가 하는 형 변환은 불가능 하며 오직 상수성(const)를 제거하는 것만 사용가능 합니다.
    또한 다른 캐스트 연산자는 const_cast가 하는 상수성(const) 제거를 하지 못합니다. 
  • 함수 포인터에는 사용 불가능합니다. (해봤음;;)



> 예제(1) - 포인터(pointer) 상수성(const) 제거

 

#include<iostream>
using namespace std;


int main(void){
    char str[] = "BlockDMask";
    const char * ptr = str;
    cout << "before : " << str << endl;


    //ptr[0] = 'Q'; ==> error


    char * c = const_cast<char *>(ptr);
    c[0] = 'Q';
    cout << "after : " << str << endl;


    return 0;
}

--> 결과

 

 



 

 

[C++] const_cast (타입 캐스트 연산자)

안녕하세요. BlockDMask 입니다. 오늘은 C++ 의 네가지 타입 캐스트 연산자 중에 (static_cast, const_cast, reinterpret_cast, dynamic_cast) const_cast 에 대해 알아보겠습니다. > const_cast 에 관한 기본 특..

blockdmask.tistory.com