C 和 C++ 中的“void*”有何不同?
C 允许将 void* 指针分配给任何指针类型而无需强制转换,而在 C++ 中则不允许。我们必须在 C++ 中显式类型转换 void* 指针
例如,以下内容在 C 中有效,但在 C++ 中无效:
void* ptr;
int *i = ptr; // Implicit conversion from void* to int*
相似地,
int *j = malloc(sizeof(int) * 5); // Implicit conversion from void* to int*
为了使上面的代码也能在 C++ 中编译,我们必须使用显式转换,如下所示,
void* ptr;
int *i = (int *) ptr;
int *j = (int *) malloc(sizeof(int) * 5);