繁体   English   中英

您可以从volatile函数中丢弃成员上的volatile吗?

[英]Can you cast away volatile on a member from a volatile function>

如果您有一个标记为volatile的类成员函数,当在该函数中使用volatile时,是否可以将volatile抛弃在该类成员上?

是。 为了消除对象的const_cast ,使用const_cast

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

就是这样 但是无论是否在代码中使用它,我都必须先看一下代码才能说。 总的来说,抛弃常数和易失性是一个危险的想法,只有在仔细检查所有情况后才能进行。

您可以使用const_cast从任何上下文中消除volatile 您是在问是否要丢弃volatile成员内部的内容,但这没有任何区别。

函数中的volatile是一项检查,它告诉编译器不要抱怨您尝试在volatile对象上(或通过对volatile对象的引用或指针)调用该方法,该方法与成员的volatile无关。

我想说的是,如果您期望访问数据成员时的行为与volatile语义一致, 只是因为代码位于volatile成员方法内部,则不会发生这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM