C和C++中void*的差別
本文翻譯自: http://www.geeksforgeeks.org/g-fact-12-2/
translated By qianghaohao
正文:
C語言中在沒有強轉的情況下,允許void*賦給其他任何類型的指針,但是在C++ 中是不允許的。這個用法經常在C代碼中使用malloc配置設定記憶體時出現。比如,下列用法在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和C++中都通過編譯,必須使用強轉:
void* ptr;
int *i = (int *) ptr;
int *j = (int *) malloc(sizeof(int) * 5);
源代碼:
http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B