c++캐스팅

정채운·2023년 11월 2일
0

static_cast

  • 가장 일반적으로 사용되는 캐스팅
  • "컴파일 시간" 에 수행되며, 기본 데이터 타입, 클래스, 포인터, 레퍼런스 등 간의 형변환에 사용됩니다.

dynamic_cast

  • 상속 관계에서의 안전 변환 당형성을 활용하는 방식이므로 하나의 virtual함수가 있어야함
  • "런타임 시" 에 수행되며, 주로 기본 클래스에서 파생 클래스로의 안전한 형변환을 지원합니다.
  • 변환이 되는경우에만 캐스팅을 해주고 안되는경우엔 "0" 으로 밀어줌

const_cast

  • const 한정자를 추가하거나 제거하는 데 사용됩니다.
  • 주로 상수성을 무시하고 변수를 수정하거나, 상수성을 부여하여 변수를 읽는 데 사용됩니다.

reinterpret_cast

  • 강력하고, 위험한 타입변환
  • 전혀 관계없는 다른 타입으로 변환
  • ex)
Player* p1 = new Player();
Dog* dog = reinterpret_cast<Dog*>p1;
intptr_t address = reinterpret_cast<intptr_t>(포인터)

0개의 댓글