在 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*呢?如何将其转换为所需的类型?