const cast(通常写作 const_cast)是 C++ 中的类型转换运算符,用来添加或移除类型的 const / volatile 限定(最常见的是“去掉 const”),以便在需要非 const 参数的接口中传递指针或引用。
注意:如果对象本来就是 const,通过 const_cast 去掉 const 后再修改它,属于未定义行为(undefined behavior)。
/ˈkɑːnst kæst/
这是 C++ 术语中的“组合词/构造名”:const 来自 constant(常量、不可修改的限定),cast 来自“类型转换(casting)”的传统说法。C++ 在早期 C 风格强制转换的基础上,引入了更明确的四种命名转换(如 static_cast、dynamic_cast、const_cast、reinterpret_cast),其中 const_cast 专门处理 const/volatile 限定。
I used const_cast to pass a const pointer to an old API.
我用了 const_cast 把一个 const 指针传给旧接口。
Although const_cast can remove constness from a reference, modifying an object that was originally declared const is undefined behavior in C++.
虽然 const_cast 可以从引用上移除 const 限定,但在 C++ 中修改一个最初就被声明为 const 的对象会导致未定义行为。
const_cast)。const_cast 的用途与风险。const_cast 的谨慎使用。const_cast 的语义与限制。