C ++中volatile
成员函数的用途是什么?
答案 0 :(得分:22)
回答关于具有“易变成员函数”意味着什么的问题(可能是或者可能不是发布问题的人最初想要的),将成员函数标记为const
或volatile
(或组合const volatile
)将这些限定符应用于函数中使用的this
指针。如标准所述(9.2.1“this
指针”):
class X
的成员函数中的此类型为X*
。如果成员函数声明为const
,则其类型为const X*
,如果成员函数声明为volatile
,则this
的类型为volatile X*
,如果成员函数声明为const volatile
,则其类型为const volatile X*
。
因此,通过将成员函数标记为volatile
,您将对该成员函数中对象的非静态数据成员进行任何访问volatile
。
答案 1 :(得分:6)
编辑:
当问题是关于volatile关键字时,发布了这个答案。问题似乎已经被第三方改变了。
ORIGINAL:
Volatile通知编译器它不应该假设它刚刚放入标记为volatile的变量中的值将在下次使用时出现...它必须在再次使用之前检查当前值。
一个例子是变量表示可能被另一个进程更改的内存位置。
这是一个例子(自从我做C ++以来已经很久了,所以请原谅任何轻微的语法问题):
volatile int x;
int DoSomething()
{
x = 1;
DoSomeOtherStuff();
return x+1; // Don't just return 2 because we stored a 1 in x.
// Check to get its current value
}