C에서 void
포인터는 암시 적으로 다른 유형으로 유형이 변환됩니다.C에서 void * 변환 C++에서
프로그램 아래 참조 :
int main()
{
void *p;
int* ptr,i=5;
p=&i;
ptr=p; <---------------------------
return 0;
}
C 환경에서 실행 프로그램 compiles successfully. 같은 프로그램이 C에서 ++ 환경에서 실행되는 경우
그러나, 나는 아래 error 점점 오전 :
prog.cpp: In function ‘int main()’:
prog.cpp:8: error: invalid conversion from ‘void*’ to ‘int*’
그것은 C++, 우리는에 명시 적으로 void
포인터 typecase해야한다는 것을 의미합니다.
따라서 new
연산자의 반환 형식이 void * 인 이유는 무엇입니까? 어떻게, 그것은 원하는 유형으로 변환되고 있습니까?
나는 C 컴파일러에게 함축적 인 캐스팅과 관련하여 좀더 지적이되도록 지시 할 수 있다고 생각한다. – maba