cppcoreguidelines-pro-type-const-cast¶
限制 C++ 代码中 const_cast
的使用。它依赖于 StrictMode
选项设置来确定是否应该标记所有 const_cast
实例,还是只标记那些删除 const
或 volatile
限定符的实例。
在 C++ 中修改已声明为 const
的变量通常被认为是未定义的行为,即使使用 const_cast
也是如此。在 C++ 中,const
限定符表示变量旨在只读,编译器通过禁止任何尝试更改该变量的值来强制执行此操作。
在 C++ 中删除 volatile
限定符可能会造成严重后果。此限定符表示变量的值可能会不可预测地改变,删除它可能会导致未定义的行为、优化问题和调试挑战。在变量的易变性是程序正确性和可靠性的关键方面的情况下,务必保留 volatile
限定符。
此规则是 类型安全(类型 3) 配置文件和 ES.50:不要去掉 const 规则的一部分,来自 C++ 核心指南。
选项¶
- StrictMode¶
当此设置设置为 true 时,表示不允许使用任何
const_cast
。另一方面,当它设置为 false 时,它允许转换为const
或volatile
类型。默认值为 false。