explicit、mutable和volatile关键字的作用||c++

目录

1.explicit

2.mutable

3.volatile


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详解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章