在使用const的任何地方都可以使用volatile吗?

rub*_*nvb 4 c++ const volatile

我想知道是否volatile可以在任何地方使用const,以及每个案例的含义.

volatile dummy_class
volatile dummy_class&
dummy_class volatile*
dummy_class *volatile
dummy_class volatile *volatile
Run Code Online (Sandbox Code Playgroud)

这些是const所涉及的所有不同情况,是否适用相同的语义volatile

ybu*_*ill 6

几乎.两者都是cv-qualifiers,几乎可以在其他地方使用.它们出现在C++语法中的唯一地方是:

CV-预选赛:
    const
    volatile

其余的语法将它们引用为cv-qualifier.

请注意,您没有提到可以使用cv-qualifiers的地方是:

struct X {
    void f() const;
    void g() volatile;
    void h() const volatile;
};
Run Code Online (Sandbox Code Playgroud)

有关后者的用法,请参见http://drdobbs.com/cpp/184403766.

但是,有一个规则,你不能组合constmutable喜欢:

stuct X {
    mutable const int x; // error
    mutable volatile int y; // valid
};
Run Code Online (Sandbox Code Playgroud)

标准中的相关位置是[dcl.stc]:

可变的说明符只能应用于类数据成员的名称(9.2),不能应用于声明为const或static的名称[...]