typeid(Derived1) == typeid(*ptr)과 같이 ptr의 타입을 비교하는 상황에서 ptr이 nullptr일 경우 반환되는 exception
마찬가지로 #include<typeinfo> 에 들어 있음
const 유무를 바꿔주는 연산자이다. const성 빼고는 다 같아야 한다.
그리고 pointer이거나 reference여야 한다. 즉, "값 자체의 constantness는 바꿀 수 없다"는 소리다.
constant이지만 가끔 값을 바꿀 필요가 있을때 주로 사용한다.
int a = 3;
const int * pt = &a;
int * pc = const_cast<int *>(pt);
*pc += 1;
논란이 생길 수 있는 type cast를 다룬다.
포인터를 다른 포인터로 바꾸거나, 숫자<->포인터 등을 할 때 쓴다.
<안 되는 것>
1) pointer를 주소표현을 담기엔 작은 integer type이나 floating type으로 변환하는 것
2) 함수포인터-data포인터 간의 변환
C에서는 다 된다. 다만 에러는 책임 안짐
