在C ++中使用volatile成员函数的目的是什么?

时间:2010-03-15 02:24:14

标签: c++ volatile

C ++中volatile成员函数的用途是什么?

2 个答案:

答案 0 :(得分:22)

回答关于具有“易变成员函数”意味着什么的问题(可能是或者可能不是发布问题的人最初想要的),将成员函数标记为constvolatile(或组合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
}