你能从易失性函数中抛弃成员上的易失性吗>

Can you cast away volatile on a member from a volatile function>

本文关键字:易失性 gt 抛弃 函数 成员      更新时间:2023-10-16

如果你有一个标记为volatile的类成员函数,当它在该函数中使用时,是否有可能在类成员上丢弃volatile ?

是。为了消除对象的易失性,使用const_cast:

T & t = const_cast<T&>(volatile_t); 

就是这样。但是你是否应该在你的代码中使用它,我不能在不看代码的情况下说。一般来说,抛弃稳定性和波动性是一个危险的想法,只有在非常仔细地检查了所有情况之后才应该这样做。

您可以使用const_cast从任何上下文中抛弃volatile。你确切地问的是在volatile成员内部的cast away,但这没有任何区别。

函数中的volatile是一个检查,它告诉编译器,如果你试图在一个volatile对象上调用该方法(或者通过一个指向volatile对象的引用或指针),这与成员的volatile性无关,请不要报错。

我想说的是,如果您期望访问数据成员时的行为与volatile语义一致,仅仅因为代码在volatile成员方法内,那将不会发生。