c++ 에서 class 객체에 대한 포인터 캐스팅 시..

trymp의 이미지

class 에 별다른 연산자 오버로드나 상속은 없는 상태에서

void * 형 포인터를 class type 의 포인터로 캐스팅 할때

void *ptr = get_pointer();
class abc *p_abc = (class *abc) ptr;

이런식으로 c style 로 캐스팅해도 문제가 없을까요?

동작상에 차이는 없어 보이는데 혹시나 해서 질문드립니다.

jick의 이미지

원래 get_pointer()로 받은 포인터가 abc *형의 포인터였다면, void *로 캐스팅하고 나중에 도로 abc *형으로 캐스팅하는 것은 가능합니다.

물론 원래 포인터가 abc *가 아니었다면... 뭐 무슨 일이 일어날지 알 수 없죠.