Cでは、void
ポインタは暗黙的に別の型に型キャストされます。
以下のプログラムを参照してください。
int main()
{
void *p;
int* ptr,i=5;
p=&i;
ptr=p; <---------------------------
return 0;
}
C環境で実行すると、プログラムは正常にコンパイルされます。
ただし、同じプログラムをC ++環境で実行すると、次のエラーが発生します。
prog.cpp: In function ‘int main()’:
prog.cpp:8: error: invalid conversion from ‘void*’ to ‘int*’
これは、C ++では、ポインターを明示的に型指定する必要があることを意味しvoid
ます。
では、なぜnew
演算子の戻り型がvoid *なのですか?どのように、それは希望のタイプに変換されていますか?