c++ - 使用const_cast忽略 volatile ?

标签 c++ volatile const-cast

const_cast 还可用于忽略对象是 volatile 的事实。然而,这实际上意味着什么?我想不出在 volatile 变量上使用 const_cast 的示例??

最佳答案

永远不要忽略变量是 volatile 的事实, const或类似的。

这样做会导致 Undefined Behavior .

什么const_cast虽然允许,但让编译器假设您转换的对象实际上并没有因此合格,即使您拥有的指针/引用是这样说的。
一如既往,对编译器撒谎的惩罚是 UB。

一个常见的示例是定义一个具有限定和非限定成员函数的类,以启用 const/ volatile 正确性,非限定版本是完成所有工作的限定版本周围的内联包装器。

volatile不过,在低级驱动程序/微 Controller 代码之外非常罕见。

关于c++ - 使用const_cast忽略 volatile ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221842/

相关文章:

c++ - 在 C++ 的纯静态公共(public)接口(interface)上删除复制/赋值运算符是否有意义?

c++ - 根据 MSVC,具有 volatile 成员的结构不再是 POD

c++ - 为什么 const_cast 删除指针的 constness 而不是指向 const 的指针?

c++ - 如何在 const 函数中调用非常量函数 (C++)

c++ - Const 引用以延长对象的生命,然后是 const_cast,这是个好主意吗?

c++ - 代码工作流程出现问题时如何快速调试?

指向从未成为 const 的 const 对象的 C++ 指针

c++ - 奇怪的 C++ Arduino 串行行为

java - 使用 volatile 关键字时出现内存一致性错误的示例?

c++: volatile 实例中的 volatile 成员函数-将数组分配给指针是无效转换吗?