const_cast
也可用于忽略对象为volatile
的事实。但是,这究竟意味着什么?我想不出你会在const_cast
变量上使用volatile
的例子吗?
答案 0 :(得分:1)
从不忽略变量为volatile
,const
之类的事实。
这样做会导致Undefined Behavior。
const_cast
允许的是,让编译器假设您投射的对象实际上不是合格的,即使您指的是指针/引用也是如此。
撒谎到编译器的代价一如既往地是UB。
一个常见的例子是定义一个具有限定和非限定成员函数的类来启用const / volatile-correctess,非限定版本是围绕完成所有工作的限定版本的内联包装。
volatile
在低级驱动程序/微控制器代码之外很少见。
答案 1 :(得分:0)
如果变量已被声明为volatile(或者确实是const),那么使用const_cast
删除它是未定义的行为,这是一个非常糟糕的主意。
但是你可能会遇到一个你知道不是真正的东西的易变(或常量)引用。在这种情况下,使用const_cast
返回原始文件是合法的,偶尔也是有用的。
我偶尔用const做过这个,但我不记得曾经挥发过这样做过。买,然后我很少使用挥发性物质。