本文对C++中整理一些关键字的简单解释。
explicit:用在类的构造函数声明,限定此构造函数不支持隐式类型转换。
class Sample {
Sample(int num);
};
Sample sample = 2; //合法
class NewSample {
explicit NewSample(int num);
};
NewSample newsample = 2; // 非法
mutable:一种用途是在指定类的非常量数据成员可以在常成员函数中被修改。
class Sample {
void ProcessConst(int num) const {
knum++;
}
mutable int knum;
};
volatile:用于修饰变量,使得编译器忽略对此变量的优化,每次需要此变量时,都从变量的原地址中读取数据,从而提供对特殊地址的稳定访问。具体是指,在编译阶段对未经volatile修饰的变量,如果编译器未发现变量被修改,则在变量被调用时,编译器不从变量的地址读取数据,而是使用之前调用该变量时此变量的值作为此变量的当前值使用,而实际上,此变量的真实值可能已经被修改。如果经volatile修饰变量,编译器总是从变量的地址处读取数据,运行时调用此变量,将不会访问错误的值。