C++中什么时候使用const_cast?

3

可能是重复问题:
const_cast的正确用法

在函数参数中使用const,然后在函数内部使用const_cast有什么用处?


2
重复:https://dev59.com/vXE85IYBdhLWcg3wqVT4 - tenfour
2个回答

9

我只在必须将const参数传递给已知不修改参数的不可修改的遗留代码的情况下使用const_cast,也就是说,它实际上是const但API /函数调用的签名不包含const关键字。


+1. 这是我在审查任何代码时唯一会验证其使用的时候。 - Lightness Races in Orbit

2

只有在需要将该参数传递给承诺不修改数据的传统 C API 时,您才会使用它。

在任何其他情况下,您都不需要使用 const_cast 来处理常量,而且请注意,即使在处理了常量后,修改对象仍然是未定义行为;编译器不再强制执行,您需要自行承担这个承诺。


删除 const 后的修改仅在原始对象实际为 const 的情况下才会产生未定义行为,但你仍然需要负责确保这一点。在这种情况下,自然而然地,你应该优先传递非 const 参数,因此这仅适用于旧版 API。 - Fred Nurk
@Fred:我觉得那就是我说的吧……? - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接