Hat*_*ter 1 c++ multithreading volatile
"volatile"关键字在方法声明中的定位是否会影响其功能?
即,以下两段代码之间有什么区别吗?
一个.
class Test
{
public:
volatile void testMe()
{
}
};
Run Code Online (Sandbox Code Playgroud)
B.
class Test
{
public:
void testMe() volatile
{
}
};
Run Code Online (Sandbox Code Playgroud)
当成员函数具有返回值时也是如此.谢谢!
它与const限定符相同.
在第一个示例中,volatile适用于函数的返回值.在这种情况下它是无效的,所以它没有多大意义.事实上,按易变价值*返回没有多大意义.volatile参数只对参考有意义:
volatile int& foo() { ... }
volatile int& i = foo(); // OK
int j = foo(); // OK, use the volatile reference to construct a non volatile int
int& j = foo(); // Error!
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,这意味着,该方法是volatile,因此,它可以在(非const)非易失性调用和类的易失性实例Test.volatile无法在volatile实例上调用没有限定符的类似方法.
Test test0;
test0.testMe(); // OK
volatile Test test1;
test1.testMe(); // OK
test1.someNonVolatileMethod(); // Error.
Run Code Online (Sandbox Code Playgroud)
*除非该值是指针