我通常会看到const 用于表示const成员函数的说明符.但是当使用volatile关键字时它意味着什么?
void f() volatile {}
Run Code Online (Sandbox Code Playgroud)
这对我来说很好,但我不明白这是什么.我在搜索中找不到任何关于此的信息,所以任何帮助都表示赞赏.
更新:为了说清楚,我知道它volatile是为了什么.我只是不知道在这种情况下它意味着什么.
Man*_*rse 14
在volatile上一个成员函数限定符是类似于const限定符.它允许在volatile对象上调用成员函数:
struct A {
void f() volatile {}
void g() {}
};
int main() {
A volatile a;
a.f(); // Allowed
a.g(); // Doesn't compile
}
Run Code Online (Sandbox Code Playgroud)
在成员函数const和volatile限定符适用于*this.然后将volatile访问该成员函数中的任何实例成员的访问,其语义与任何volatile变量相同.特别是,volatile不能在volatile对象上调用非成员函数,并volatile以与以下相同的方式应用于重载const:
#include <iostream>
class C {
public:
void f() {
std::cout << "f()\n";
}
void f() const {
std::cout << "f() const\n";
}
void f() volatile {
std::cout << "f() volatile\n";
}
void f() const volatile {
std::cout << "f() const volatile\n";
}
};
int main() {
C c1;
c1.f();
const C c2;
c2.f();
volatile C c3;
c3.f();
const volatile C c4;
c4.f();
}
Run Code Online (Sandbox Code Playgroud)