如果你有一个标记为volatile的类成员函数,是否可以在类成员中使用该类函数时抛弃volatile?
答案 0 :(得分:4)
是。要抛弃对象的易失性,使用const_cast
:
T & t = const_cast<T&>(volatile_t);
这就是方法。但是你是否应该在你的代码中使用它,我不能不看代码。一般来说,抛弃常量和挥发性是一个危险的想法,只有在仔细检查所有情况后才能进行。
答案 1 :(得分:0)
您可以使用volatile
从任何上下文中删除const_cast
。你正在准确地要求在volatile
成员内部抛弃,但这没有任何区别。
函数中的volatile
是一个检查,如果您尝试在volatile
对象上调用该方法(或通过引用或指向volatile
的指针,则告诉编译器不要抱怨对象),与成员的volatile
无关。
我想说的是,如果您希望访问数据成员时的行为与volatile
语义一致,只是因为代码位于volatile
成员中方法,这不会发生。