0

在释放 const 数据的内存时,为什么我需要 const_cast 它。如果我忽略它会是什么结果。

4

1 回答 1

7

你没有。这是完全有效的,符合标准的代码:

int const * const a = new int(42);
delete a;

听起来您正在使用std::freefrom<cstdlib>来执行此操作,签名是

void free(void *);

在这种情况下,从int const * constto的隐式转换void *失败,因为您只能隐式 const-cast,而不是 const 。无论如何,您都想要 C++ 的第一个版本。

于 2013-09-02T07:48:24.933 回答