代码之家  ›  专栏  ›  技术社区  ›  bjskishore123

使用const-cast消除挥发性

c++
  •  1
  • bjskishore123  · 技术社区  · 15 年前

    我听说变量的易失性可以用const-cast操作符消除。

    在哪些情况下,我们需要消除变量的易失性? 有什么好的用例吗? 它是危险的操作,因为我们声明它是不稳定的,认为它会被外部因素修改,消除不稳定的性质可以阻止对它的修改。特别是当可变指针是寄存器等时。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Johannes Schaub - litb    15 年前

    当你这样做的时候,行为是不确定的。请注意,从真正引用非易失性变量的表达式中删除volatile和从引用易失性变量的表达式中删除volatile是不同的。后一件事就是你问的,它会导致不明确的行为。标准法

    如果试图通过使用具有非易失性限定类型的lvalue来引用使用易失性限定类型定义的对象,则程序行为是未定义的。