在回答Do I cast the result of malloc?的问题时,我不需要也不应在C中强制转换返回的void
的malloc()
指针。
但是C ++中的new
运算符如何?
是否有明确的理由要做[[仅:
int *p_rt = new int;
而不是
int *p_rt = (*int) new int;
或者我可以做演员吗?
malloc
的返回值是void*
,因此必须在C ++中强制转换为T*
:
T* p = static_cast<T*>(malloc(sizeof(T));
int *p_rt = new int;
代替
int *p_rt = (*int) new int;
是的,有理由使用第一个。重新解释强制类型转换会禁用类型诊断,并经常导致错误。您应尽可能避免使用它们。将指针强制转换为相同类型没有优势。P.S。您尝试的强制转换在语法上是错误的。