C 캐스팅의 문

  • C/C++ 차이
    • C: void*의 암시적 변환 허용
    • C++: 비허용
  • C/C++언어의 캐스팅
    • C: int*
    • C++: static_cast<int*>
  • 사용 이유
    • C 언어 캐스팅의 단점

      • 명시적 캐스팅이 실수인지 의도인지 구분 불가
        int n = 0;
      double* p1 = (double*)&n;
      *p1 = 3.4; -> 8byte write
      const int c = 10;
      int* p2 = (int*)&c;
        
    • 개선

      • 용도별 다른 4가지 캐스팅 연산자 제공

C++ explicit casting

  • const_cast

    • 상수성과 volatile 제거
      const int c = 10;
    volatile int v = 20;
    int *p1 = const_cast<int*>(&c);
      
  • const int c를 char*에 담기

      const int c = 10;
    char* p1 = reinterpet_cast<char*>(const_cast<int*>(&c));