目录
1.explicit
explicit(明确的)用于修饰只有一个参数的类的构造函数,防止隐式生成对象(通过此构造函数)。
如下:
class Num
{
public:
Num(int b)
{
a = b;
cout << "拷贝构造函数调用" << endl;
}
private:
int a;
};
int main()
{
Num num = 10;
return 0;
}
如上程序,会隐式的调用构造函数,程序运行结果如下:
如果我们给构造函数前面加上关键字explicit,这种隐式的转换不会发生,程序报错。
2.mutable
mutable(易变的)用来修饰结构体或者类中的变量,被修饰成mutable的变量能突破const的限制,成为永远可变的变量。
如下例所示:
# include<iostream>
using namespace std;
class Test
{
public:
Test(int num) :_num(num) {}
void Print() const
{
//被声明成const的函数不能修改成员变量
this->_num = 10;//由于_num被声明为mutanble,因此次此处是可以修改的
cout << _num << endl;
}
private:
mutable int _num;
};
int main()
{
Test test(5);
test.Print();
return 0;
}
打印结果如下:
3.volatile
volatile的中文意思为不稳定的、易变的。
关于volatile的解析,我发现菜鸟教程上讲解的挺容易理解的,volatile详解