C允许将void *指针分配给任何类型的指针而无需强制转换,而C++则不允许;这个习惯用法经常出现在使用malloc内存分配的C代码中。例如,以下内容在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
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。