你能否从一个易变的函数中抛弃一个成员的volatile?

时间:2011-10-13 15:38:21

标签: c++ volatile

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

2 个答案:

答案 0 :(得分:4)

是。要抛弃对象的易失性,使用const_cast

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

这就是方法。但是你是否应该在你的代码中使用它,我不能不看代码。一般来说,抛弃常量和挥发性是一个危险的想法,只有在仔细检查所有情况后才能进行。

答案 1 :(得分:0)

您可以使用volatile从任何上下文中删除const_cast。你正在准确地要求在volatile成员内部抛弃,但这没有任何区别。

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

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