컴퓨터 과학 & 영상처리 관련/C / C++
cpp 캐스트 연산자
꺄뜨르
2012. 7. 10. 18:13
c언어에서의 형변환
void *p;
int n;
p = (void*)&n; //int*형을 void*형으로 캐스트
cpp언어에서는 이런 식으로 캐스트를 해도 에러가 나진 않지만, 가능한 한 cpp 언어에 추가된 캐스트 연산자를 사용하도록 하십시오, 이 캐스트 연산자들은 포인터형이나 참조형을 별도의 포인터형이나 참조형으로 변환합니다.
캐스트 연산자 v라는 값이나 변수를 T형으로 변환 |
동작 |
const_cast<T>(v) |
const 속성을 제거하는 데 사용합니다 |
dynamic_cast<T>(v) | 기본 클래스의 포인터(또는 참조)를 파생 클래스의 포인터(또는 참조)로 변환하는데 사용합니다 |
static_cast<T>(v) | c언어의 캐스트와 가까운 방법을 사용할 수 있습니다. const는 제거할 수 없습니다 |
reinterpret_cast<T>(v) |
함수의 포인터를 다른 함수의 포인터로 변환하거나 포인터를 int 형 등으로 변환할 수 있습니다. 전혀 다른 형으로 캐스트하는 경우, 올바르지 않은 메모리 액세스를 불러일으키기 쉬우므로, 꼭 필요한 때만 사용하십시오. |
void *p;
int n;
p = static_cast<void *> (&n); //int* to void*
이 캐스트 연산자를 사용하면 , 잘못 캐스트를 했을 경우에 컴파일 에러를 발생시켜 줍니다. 때문에 C언어에서 사용하던 방법보다도 안전하게 캐스트할 수 있습니다. 또한 _cast라고 기술하기 대문에 , 캐스트 하는 부분이 눈에 듸어 찾기 편리합니다...개뿔...