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?
几乎.两者都是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.
但是,有一个规则,你不能组合const和mutable喜欢:
stuct X {
mutable const int x; // error
mutable volatile int y; // valid
};
Run Code Online (Sandbox Code Playgroud)
标准中的相关位置是[dcl.stc]:
可变的说明符只能应用于类数据成员的名称(9.2),不能应用于声明为const或static的名称[...]