케스트 연산란
개발자가 casting의 목적을 명확하게 명시함으로써 개발자의 의도를 컴파일러가 알게하고, 그 결과 컴파일러는 개발자의 의도와 다른 casting의 실수를 개발자에게 알려준다.
* static_cast
- 상속 관계에 있는 포인터 간
암시적인 변환을 비롯하여, 산술형(char, int, double 등) 및 열거형(enum)사이의 변환
부모와 자식 클래스의 관계가 관련된 변환, void형으로의 변환
다만, 부모와 자식 변환은 동적 자료형(dynamic type)이 아닌 정적 자료형(static type)
- 대체적으로 안전한 형변환
int number = 22;
char ch = number; //.컴파일러가 묵시적으로 캐스팅을 함
char ch2 = static_cast<char>(number); //.묵시적으로 형변환을 해줌
*. const_cast
- const로 선언된 변수의 상수성을 없애고자 할 때
포인터 타입과 참조형에 대해서만 사용
C++ 형 체계를 무너뜨릴 수 있으므로 신중히 사용
std::string name = "콘스트";
char* name2 = const_cast<char *>(name_c.str());
*. reinterpret_cast
- 일반적으로 허용하지 않는 위험한 형변환을 할때 사용
- 기본 타입 변환을 제외한 모든 변환이 가능
- 포인터를 정수로 변환하는 작업을 사용할 때
* 이것은 대부분 구현체가 정의하도록 맡겨져 있어서 이식성을 떨어뜨리며, 요구된 변환이 올바른 변환인지의 여부를 컴파일러가 검사하지 않으므로 신중히 사용

덧글